Heim >Datenbank >MySQL-Tutorial >Wie suche ich nach E-Mails in einer JSON-Spalte in Laravel?

Wie suche ich nach E-Mails in einer JSON-Spalte in Laravel?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 07:13:02352Durchsuche

How to Search for Emails Within a JSON Column in Laravel?

Eloquente Abfragen zum Durchsuchen von JSON-Spalten

In Laravel kann das Durchsuchen von JSON-Spalten eine Herausforderung sein. Dieser Artikel befasst sich mit einem spezifischen Szenario mit einer „An“-Spalte, in der E-Mail-Adressen in einem JSON-Format gespeichert werden.

Das Problem

Gegeben sei eine „An“-Spalte mit JSON-Daten wie diese:

<code class="json">[
    {
        "emailAddress": {
            "name": "Test", 
            "address": "test@example.com"
        }
    }, 
    {
        "emailAddress": {
            "name": "Test 2", 
            "address": "test2@example.com"
        }
    }
]</code>

Das Ziel besteht darin, an „test@example.com“ gesendete E-Mails abzurufen. Die Verwendung von whereJsonContains('to->emailAddress->address', 'test@example.com') liefert keine Ergebnisse.

Die Lösung

Das Problem liegt bei der Verwendung des Pfeiloperators (->). In JSON-Arrays wird der Pfeiloperator nicht unterstützt. Stattdessen sollte die Schreibweise mit doppelten eckigen Klammern ([['emailAddress' => ['address' => 'test@example.com']]]) verwendet werden.

Die korrigierte Abfrage lautet:

<code class="php">DB::table('emails')
   ->whereJsonContains('to', [['emailAddress' => ['address' => 'test@example.com']]])
   ->get()</code>

Diese Abfrage gibt alle E-Mails zurück, die „test@example.com“ in der Spalte „An“ enthalten.

Das obige ist der detaillierte Inhalt vonWie suche ich nach E-Mails in einer JSON-Spalte in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn