Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Melaksanakan Subquery WHERE IN Klausa dalam Laravel?

Bagaimana untuk Melaksanakan Subquery WHERE IN Klausa dalam Laravel?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 10:04:10451semak imbas

How to Execute a Subquery WHERE IN Clause in Laravel?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn