Masalah:
Dalam aplikasi Laravel, anda mempunyai lajur to daripada jenis JSON dalam jadual e-mel, menyimpan alamat e-mel dalam format berikut:
<code class="JSON">[ { "emailAddress": { "name": "Test", "address": "[email protected]" } }, { "emailAddress": { "name": "Test 2", "address": "[email protected]" } } ]</code>
Anda perlu mendapatkan semula koleksi semua e-mel yang dihantar ke "[e-mel dilindungi]".
Penyelesaian:
Menggunakan Laravel's Eloquent, anda boleh mencari nilai tertentu dalam lajur JSON menggunakan kaedah whereJsonContains. Walau bagaimanapun, pertanyaan awal anda:
<code class="php">DB::table('emails')->whereJsonContains('to->emailAddress->address', '[email protected]')->get();</code>
tidak mengembalikan padanan kerana pengendali anak panah (->) tidak sah dalam kekunci tatasusunan. Untuk menyelesaikan isu ini, gunakan tatasusunan bersarang sebaliknya:
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get();</code>
Pertanyaan ini akan mencari alamat e-mel yang sama dengan "[email protected]" dengan betul dan mengembalikan koleksi yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Pertanyaan untuk Alamat E-mel dalam Lajur JSON di Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!