Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mencipta Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?
Apabila membina pertanyaan pangkalan data dalam Laravel Eloquent, anda mungkin menghadapi senario di mana anda perlu menentukan berbilang keadaan menggunakan klausa where . Semasa melonjakkan berbilang yang panggilan adalah pendekatan biasa, terdapat alternatif yang lebih elegan untuk dipertimbangkan.
Laravel menawarkan cara yang lebih ringkas untuk menentukan keadaan berbilang tempat menggunakan tatasusunan:
$query->where([ ['column_1', '=', 'value_1'], ['column_2', '<>', 'value_2'], // ... ]);
Pendekatan ini membolehkan anda mengumpulkan berbilang tempat klausa dalam satu panggilan fungsi.
Sebelum Laravel 5.3, anda boleh menggunakan tatasusunan untuk menentukan berbilang keadaan di mana jika semuanya menggunakan operator yang sama (biasanya 'dan'):
$matchThese = ['field' => 'value', 'another_field' => 'another_value']; $results = User::where($matchThese)->get();
Kaedah ini akan menghasilkan pertanyaan yang serupa kepada:
SELECT * FROM users WHERE field = value AND another_field = another_value
Jika anda memerlukan kriteria yang lebih kompleks, anda boleh menggunakan sub-pertanyaan dalam klausa where anda:
$subquery = User::where(...)->select('id')->where(...); $results = User::whereIn('id', $subquery)->get();
Dalam contoh ini, subquery mengembalikan set ID yang memenuhi kriteria tertentu, yang kemudiannya digunakan untuk menapis pertanyaan.
Untuk menggambarkan, pertimbangkan pertanyaan berikut yang mendapatkan semula pengguna dengan syarat tertentu:
$results = User::where('active', 1) ->where('verified', 1) ->where('country', 'United States') ->get();
Menggunakan pendekatan alternatif yang dinyatakan di atas, pertanyaan itu boleh ditulis sebagai:
// Array-based where (Laravel 5.3 and later) $conditions = [ ['active', '=', 1], ['verified', '=', 1], ['country', '=', 'United States'], ]; $results = User::where($conditions)->get(); // Array method (prior to Laravel 5.3) $matchThese = ['active' => 1, 'verified' => 1, 'country' => 'United States']; $results = User::where($matchThese)->get();
Dengan memanfaatkan teknik ini, anda boleh mencipta lebih ringkas dan pertanyaan yang boleh dibaca, mempertingkatkan kebolehselenggaraan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!