Maison >base de données >tutoriel mysql >Comment rechercher des e-mails dans une colonne JSON dans Laravel ?

Comment rechercher des e-mails dans une colonne JSON dans Laravel ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 07:13:02326parcourir

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

Requêtes éloquentes pour la recherche de colonnes JSON

Dans Laravel, la recherche de colonnes JSON peut être un défi. Cet article se penchera sur un scénario spécifique impliquant une colonne « À » qui stocke les adresses e-mail au format JSON.

Le problème

Étant donné une colonne « À » avec Données JSON comme celle-ci :

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

Le but est de récupérer les emails envoyés à "test@example.com". L'utilisation dewhereJsonContains('to->emailAddress->address', 'test@example.com') ne renvoie aucun résultat.

La solution

Le problème réside lors de l'utilisation de l'opérateur fléché (->). Dans les tableaux JSON, l'opérateur flèche n'est pas pris en charge. Au lieu de cela, la notation double crochet ([['emailAddress' => ['address' => 'test@example.com']]]) doit être utilisée.

La requête corrigée est :

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

Cette requête renverra tous les e-mails incluant « test@example.com » dans la colonne « À ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn