Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mencipta Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?

Bagaimanakah Saya Boleh Mencipta Klausa Berbilang WHERE dengan Cekap dalam Laravel Eloquent?

Barbara Streisand
Barbara Streisandasal
2024-12-15 18:02:10149semak imbas

How Can I Efficiently Craft Multiple WHERE Clauses in Laravel Eloquent?

Membuat Pertanyaan dengan Klausa Tempat Berbilang 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.

Pendekatan Alternatif: Keadaan Di Mana Berasaskan Tatasusunan (Laravel 5.3 dan Kemudian)

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.

Menggunakan Kaedah Tatasusunan Sebelum Laravel 5.3

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

Memanfaatkan Sub-Pertanyaan untuk Logik Kompleks

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.

Contoh Penggunaan

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!

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