JSON-Spalten in Laravel durchsuchen
Bei der Arbeit mit JSON-Spalten in Laravel kann die Suche nach bestimmten Werten eine Herausforderung sein. Hier ist eine Lösung für das häufig auftretende Problem des Auffindens von E-Mails in einem JSON-Array, das in einer „An“-Spalte gespeichert ist.
Das Problem:
In einer „E-Mails“-Tabelle enthält eine „An“-Spalte vom Typ JSON verschachtelte Arrays, die E-Mail-Adressen darstellen. Ziel ist es, eine Sammlung aller an einen bestimmten Empfänger gesendeten E-Mails abzurufen.
Fehlgeschlagener Versuch:
Ein erster Suchversuch mit der Methode whereJsonContains von Laravel ergab keine Übereinstimmungen . Die Abfrage „übersetzt“ als:
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))
Lösung:
Der Schlüssel zu einer erfolgreichen Suche liegt im Verständnis, dass der Pfeiloperator (->) dies nicht tut mit Arrays arbeiten. Verwenden Sie für JSON-Suchen mit Arrays die folgende Syntax:
DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()
Diese Abfrage identifiziert alle E-Mails, die an die angegebene Empfängeradresse gesendet werden, korrekt und gibt sie zurück.
Das obige ist der detaillierte Inhalt vonWie suche ich nach E-Mails in einem JSON-Array in der Spalte „An' von Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!