Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menggunakan Subqueries dengan Cekap dengan `WHERE IN` dalam Laravel untuk Menapis Data?

Bagaimanakah Saya Boleh Menggunakan Subqueries dengan Cekap dengan `WHERE IN` dalam Laravel untuk Menapis Data?

Susan Sarandon
Susan Sarandonasal
2024-12-02 03:04:10500semak imbas

How Can I Efficiently Use Subqueries with `WHERE IN` in Laravel to Filter Data?

Subkueri dengan Klausa 'WHERE IN' dalam Laravel

Dalam Laravel, mencipta subquery dalam klausa 'WHERE IN' adalah cekap cara untuk menapis hasil berdasarkan data daripada jadual yang berkaitan. Mari kita periksa senario tertentu:

Anda ditugaskan untuk mengambil produk berdasarkan kategorinya. Pertanyaan hendaklah mengandungi lajur seperti ID, nama dan status dan produk hendaklah tergolong dalam kategori tertentu dengan ID '223' atau '15'.

Pertanyaan Asal:

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

Penggunaan Setara Laravel Penutupan:

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:

Fungsi 'whereIn' mengambil penutupan sebagai hujah, membolehkan anda mentakrifkan subkueri dalam.

  • from(): Memilih jadual dari mana subquery akan dapatkan semula keputusan.
  • select(): Menentukan lajur yang akan dikembalikan daripada subquery.
  • whereIn() dan where(): Penapis keputusan daripada subkueri berdasarkan kriteria yang ditetapkan.

Faedah Penggunaan Penutupan:

  • Meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
  • Membenarkan subkueri yang lebih kompleks yang melibatkan berbilang syarat atau gabungan.
  • Meningkatkan prestasi dengan mengurangkan bilangan panggilan pangkalan data berbanding menggunakan berbilang gabungan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Subqueries dengan Cekap dengan `WHERE IN` dalam Laravel untuk Menapis Data?. 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