Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Saya Boleh Merangkai atau Mengumpulkan Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?

Bagaimana Saya Boleh Merangkai atau Mengumpulkan Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?

Susan Sarandon
Lepaskan: 2024-12-10 07:37:10
asal
187 orang telah melayarinya

How Can I Efficiently Chain or Group Multiple WHERE Clauses in Laravel Eloquent?

Berbilang Rangkaian atau Kumpulan WHERE Klausa dalam Laravel Eloquent

Bekerja dengan berbilang klausa WHERE dalam pertanyaan Laravel Eloquent boleh kelihatan membosankan dan tidak diperhalusi apabila menggunakan sintaks rantaian standard. Walau bagaimanapun, terdapat beberapa pendekatan alternatif yang tersedia untuk meningkatkan keanggunan dan kebolehbacaan kod anda.

Menggunakan Klausa WHERE Berasaskan Tatasusunan

Diperkenalkan dalam Laravel 5.3, tatasusunan- berdasarkan klausa WHERE membenarkan anda mengumpulkan berbilang syarat dalam satu panggilan. Ini boleh mengurangkan bilangan baris kod yang diperlukan dengan ketara, seperti yang dilihat dalam contoh berikut:

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '!=', 'value_2'],
    ['column_3', '=', 'value_3'],
    ...
]);
Salin selepas log masuk

Mengumpulkan Klausa DI MANA untuk DAN Operasi

Jika semua anda Klausa WHERE menggunakan operator AND, anda boleh mengumpulkannya ke dalam tatasusunan dan menyampaikannya kepada kaedah where. Ini serupa dengan pendekatan berasaskan tatasusunan tetapi secara eksplisit menyatakan keadaan DAN.

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];

$results = User::where($matchThese)->get();
Salin selepas log masuk

Menggabungkan Kumpulan dengan OR Operator

Untuk mencipta pertanyaan yang lebih kompleks dengan kedua-duanya Operator DAN dan ATAU, anda boleh menggunakan tatasusunan bersarang. Contoh berikut menggabungkan dua teknik sebelumnya:

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];
$orThose = ['yet_another_field' => 'yet_another_value', ...];

$results = User::where($matchThese)
    ->orWhere($orThose)
    ->get();
Salin selepas log masuk

Pertanyaan ini akan menjana SQL berikut:

SELECT * FROM users
  WHERE (field = value AND another_field = another_value AND ...)
  OR (yet_another_field = yet_another_value AND ...)
Salin selepas log masuk

Dengan menggunakan pendekatan alternatif ini, anda boleh meningkatkan kejelasan dan kepekatan Pertanyaan yang fasih, mengurangkan keperluan untuk sintaks rantaian bertele-tele dan berulang.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Merangkai atau Mengumpulkan Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?. 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