Apabila mencari rekod pangkalan data menggunakan Laravel 5's Eloquent ORM, kaedah di mana boleh digunakan dengan operator LIKE untuk melakukan perbandingan tidak peka huruf besar-besaran. Walau bagaimanapun, sintaks untuk operator ini dalam Laravel berbeza daripada sintaks SQL LIKE standard.
Soalan:
Seorang pembangun sedang cuba melaksanakan pertanyaan berikut menggunakan Laravel 5's Eloquent ORM:
BookingDates::where('email', Input::get('email'))->orWhere('name', 'like', Input::get('name'))->get()
Walau bagaimanapun, tiada keputusan dikembalikan. Pembangun tidak pasti mengapa klausa orWhereLike tidak sepadan dengan mana-mana hasil.
Jawapan:
Sintaks orWhereLike menerima dua argumen: nama lajur yang akan dicari dan carian istilah. Dalam kes ini, lajur nama sedang dicari untuk nilai yang mengandungi input pengguna yang ditentukan oleh Input::get('name').
Walau bagaimanapun, kod yang disediakan menggunakan kaedah orWhere, bukan kaedah orWhereLike . Untuk melakukan carian tidak peka huruf besar-besaran menggunakan LIKE, sintaks yang betul ialah:
orWhere('name', 'like', '%' . Input::get('name') . '%')
Kod ini akan menghasilkan pernyataan MySQL berikut:
SELECT * FROM booking_dates WHERE email='[email protected]' OR name LIKE '%John%'
Dengan menggunakan tanda peratusan (%) dalam istilah carian, pertanyaan akan memadankan sebarang rekod yang lajur nama mengandungi rentetan yang ditentukan, tanpa mengira kedudukannya dalam nilai lajur.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Carian Tidak Peka Huruf dengan LIKE dalam ORM Fasih Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!