Pertanyaan Fasih untuk Mencari Lajur JSON
Dalam Laravel, mencari lajur JSON boleh menjadi satu cabaran. Artikel ini akan menyelidiki senario khusus yang melibatkan lajur "Kepada" yang menyimpan alamat e-mel dalam format JSON.
Masalahnya
Diberikan lajur "Kepada" dengan Data JSON seperti ini:
<code class="json">[ { "emailAddress": { "name": "Test", "address": "test@example.com" } }, { "emailAddress": { "name": "Test 2", "address": "test2@example.com" } } ]</code>
Matlamatnya adalah untuk mendapatkan semula e-mel yang dihantar ke "test@example.com." Menggunakan whereJsonContains('to->emailAddress->address', 'test@example.com') tidak mengembalikan hasil.
Penyelesaian
Isunya terletak dalam penggunaan pengendali anak panah (->). Dalam tatasusunan JSON, pengendali anak panah tidak disokong. Sebaliknya, notasi kurungan segi empat sama dua ([['emailAddress' => ['address' => 'test@example.com']]]) hendaklah digunakan.
Pertanyaan yang diperbetulkan ialah:
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => 'test@example.com']]]) ->get()</code>
Pertanyaan ini akan mengembalikan semua e-mel yang termasuk "test@example.com" dalam lajur "Kepada".
Atas ialah kandungan terperinci Bagaimana untuk Mencari E-mel dalam Lajur JSON di Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!