Heim >Datenbank >MySQL-Tutorial >Wie kann man mit Laravel effektiv nach E-Mails in einer JSON-Spalte suchen?
JSON-Spalten mit Laravel durchsuchen
Die Fähigkeit, effektiv nach Daten in JSON-Spalten zu suchen, ist entscheidend für die Nutzung der Leistungsfähigkeit moderner Datenbanken. In diesem Szenario stehen wir vor der Herausforderung, nach E-Mails zu suchen, die in einer JSON-Spalte gespeichert sind. Das Ziel besteht darin, eine Sammlung aller an einen bestimmten Empfänger gesendeten E-Mails abzurufen.
Zunächst wurde ein Versuch mit der Methode whereJsonContains unternommen, die bei Übergabe eines geeigneten JSON-Pfads und -Werts die Ergebnisse entsprechend filtern sollte. Der Ansatz war jedoch erfolglos, was zu dem Verdacht führte, dass der JSON-Pfad möglicherweise falsch ist oder dass die Methode eine bestimmte Formatierung erfordert.
Eine genauere Betrachtung der Abfrageübersetzung in der Debug-Leiste zeigt, von welcher Abfrage tatsächlich ausgeführt wird die Datenbank:
<code class="sql">select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))</code>
Bei weiterer Untersuchung stellt sich heraus, dass der Pfeiloperator (->) bei der Arbeit mit Arrays in JSON-Pfaden nicht unterstützt wird. Dies ist eine wichtige Erkenntnis zur Lösung des Problems.
Der alternative Ansatz beinhaltet die Verwendung einer ordnungsgemäß formatierten JSON-Abfrage. Die korrekte Syntax für die Suche innerhalb eines Arrays ist die Verwendung von zwei eckigen Klammern (`[[]]):
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()</code>
Mit dieser Anpassung wird die Abfrage korrekt übersetzt in:
<code class="sql">select * from `emails` where json_contains(`to`, '{"emailAddress":{"address":"[email protected]"}}')</code>
Durch die Verwendung dieser modifizierten Syntax kann die gewünschte Sammlung von E-Mails, die an den angegebenen Empfänger gesendet werden, effizient abgerufen werden.
Das obige ist der detaillierte Inhalt vonWie kann man mit Laravel effektiv nach E-Mails in einer JSON-Spalte suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!