Laravel Subquery Where In
Query:
Anda perlu melaksanakan pertanyaan berikut dalam Laravel:
SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN ('223', '15') ) AND `p`.`active`=1
Penyelesaian:
Untuk mencapai ini dalam Laravel menggunakan subquery, anda boleh menggunakan kod berikut:
Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); }) ->get();
Penjelasan:
Kaedah whereIn membolehkan anda menentukan bahawa nilai lajur harus sepadan dengan mana-mana nilai dalam tatasusunan yang disediakan. Dalam kes ini, anda ingin memilih semua produk yang lajur idnya terdapat dalam lajur product_id jadual product_category, dengan lajur category_id adalah sama ada '223' atau '15' dan lajur aktif adalah sama dengan 1.
Kod yang disediakan menggunakan penutupan untuk menentukan subkueri. Dalam penutupan, anda mentakrifkan pertanyaan yang mendapatkan semula lajur product_id daripada jadual product_category. Pertanyaan kemudiannya menapis keputusan berdasarkan syarat yang ditentukan dan akhirnya mengembalikan nilai product_id yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Subquery WHERE IN Klausa dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!