Mencari Lajur JSON dalam Laravel
Apabila bekerja dengan lajur JSON dalam Laravel, mencari nilai tertentu boleh menjadi mencabar. Berikut ialah penyelesaian kepada isu pengesanan e-mel yang kerap ditemui dalam tatasusunan JSON yang disimpan dalam lajur "Kepada".
Masalahnya:
Dalam jadual "e-mel" , lajur "Kepada" jenis JSON mengandungi tatasusunan bersarang yang mewakili alamat e-mel. Matlamatnya ialah untuk mendapatkan semula koleksi semua e-mel yang dihantar kepada penerima tertentu.
Percubaan Gagal:
Percubaan awal untuk mencari menggunakan kaedah whereJsonContains Laravel tidak menghasilkan padanan . Pertanyaan "diterjemahkan" sebagai:
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))
Penyelesaian:
Kunci kepada carian yang berjaya terletak pada pemahaman bahawa pengendali anak panah (->) tidak bekerja dengan tatasusunan. Untuk carian JSON yang melibatkan tatasusunan, gunakan sintaks berikut:
DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()
Pertanyaan ini akan mengenal pasti dengan betul dan mengembalikan semua e-mel yang dihantar ke alamat penerima yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Mencari E-mel dalam Tatasusunan JSON dalam Lajur \'Ke\' Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!