Problem:
In einer Laravel-Anwendung haben Sie eine To-Spalte vom Typ JSON in der E-Mail-Tabelle und speichert E-Mail-Adressen im folgenden Format:
<code class="JSON">[ { "emailAddress": { "name": "Test", "address": "[email protected]" } }, { "emailAddress": { "name": "Test 2", "address": "[email protected]" } } ]</code>
Sie müssen eine Sammlung aller E-Mails abrufen, die an „[email protected]“ gesendet wurden.
Lösung:
Mit Laravel's Eloquent können Sie mit der Methode whereJsonContains nach bestimmten Werten in JSON-Spalten suchen. Ihre erste Abfrage:
<code class="php">DB::table('emails')->whereJsonContains('to->emailAddress->address', '[email protected]')->get();</code>
gibt jedoch keine Übereinstimmung zurück, da der Pfeiloperator (->) innerhalb von Array-Schlüsseln nicht gültig ist. Um dieses Problem zu beheben, verwenden Sie stattdessen verschachtelte Arrays:
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get();</code>
Diese Abfrage sucht korrekt nach E-Mail-Adressen, die „[email protected]“ entsprechen, und gibt die gewünschte Sammlung zurück.
Das obige ist der detaillierte Inhalt vonWie frage ich nach E-Mail-Adressen in einer JSON-Spalte in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!