Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggunakan `whereIn` Laravel dengan Subquery?

Bagaimana untuk Menggunakan `whereIn` Laravel dengan Subquery?

Susan Sarandon
Lepaskan: 2024-12-25 13:32:55
asal
524 orang telah melayarinya

How to Use Laravel's `whereIn` with a Subquery?

Subkueri Laravel dengan Klausa WHERE IN

Tugas biasa dalam Laravel ialah untuk mendapatkan semula data menggunakan subkueri dalam klausa WHERE IN. Untuk mencapai ini, anda boleh menggunakan kaedah whereIn() dengan penutupan.

Sebagai contoh, katakan anda mempunyai pertanyaan berikut:

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
Salin selepas log masuk

Untuk menterjemah pertanyaan ini ke dalam Laravel, 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();
Salin selepas log masuk

Dalam ini kod:

  • Produk::whereIn('id', ...) memulakan subquery dalam klausa WHERE IN.
  • Fungsi penutupan mentakrifkan subquery.
  • $query->select('paper_type_id') memilih lajur untuk dikembalikan daripada subquery.
  • $query->from(with(new ProductCategory)->getTable()) menentukan jadual untuk digunakan dalam subquery.
  • $query->whereIn( 'category_id', ['223', '15']) menambah syarat pada subquery.
  • $query->where('active', 1) menambah syarat lain pada subquery.
  • ->get() mendapatkan semula hasilnya.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan `whereIn` Laravel dengan Subquery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan