Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membina Kompleks ATAU dan DAN Pertanyaan dengan Cekap dalam Laravel Eloquent?

Bagaimana untuk Membina Kompleks ATAU dan DAN Pertanyaan dengan Cekap dalam Laravel Eloquent?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-24 18:37:33469semak imbas

How to Efficiently Build Complex OR and AND Queries in Laravel Eloquent?

Laravel Eloquent Query: Advanced OR and AND Conditions

Dalam pertanyaan Laravel Eloquent, anda mungkin menghadapi senario di mana anda memerlukan keadaan kompleks yang melibatkan operator OR dan AND. Untuk mengendalikan pertanyaan sedemikian dengan berkesan, Laravel menyediakan ciri pengumpulan logik yang membolehkan anda mengumpulkan berbilang keadaan secara logik.

Contoh:

Pertimbangkan pertanyaan berikut:

WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)

Penyelesaian menggunakan Logik Pengumpulan:

Pengumpulan Logik Laravel membolehkan anda menyusun keadaan ke dalam penutupan bersarang. Untuk pertanyaan di atas, kod akan kelihatan seperti ini:

Model::where(function ($query) {
    $query->where('a', '=', 1)
          ->orWhere('b', '=', 1);
})
->where(function ($query) {
    $query->where('c', '=', 1)
          ->orWhere('d', '=', 1);
});

Dengan menyarangkan syarat dalam penutupan, anda boleh mengumpulkannya secara logik dan mencapai hasil pertanyaan yang diingini.

Mentah Alternatif SQL:

Walaupun pengumpulan logik ialah pendekatan yang disyorkan, anda juga boleh menggunakan SQL mentah untuk mengendalikan kompleks pertanyaan. Walau bagaimanapun, ia secara amnya tidak diutamakan kerana ia boleh membawa kepada kelemahan keselamatan dan menjadikan pertanyaan kurang boleh dibaca.

Atas ialah kandungan terperinci Bagaimana untuk Membina Kompleks ATAU dan DAN Pertanyaan dengan Cekap dalam Laravel Eloquent?. 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