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

Comment rechercher des adresses e-mail dans une colonne JSON dans Laravel ?

Barbara Streisand
Libérer: 2024-10-29 00:24:02
original
995 Les gens l'ont consulté

How to Query for Email Addresses within a JSON Column in Laravel?

Récupération de données d'une colonne JSON dans Laravel

Problème :

Dans une application Laravel, vous avez une colonne to de type JSON dans la table des e-mails, stockant les adresses e-mail au format suivant :

<code class="JSON">[
    {
        "emailAddress": {
            "name": "Test", 
            "address": "[email&#160;protected]"
        }
    }, 
    {
        "emailAddress": {
            "name": "Test 2", 
            "address": "[email&#160;protected]"
        }
    }
]</code>
Copier après la connexion

Vous devez récupérer une collection de tous les e-mails envoyés à "[email protected]".

Solution :

À l'aide d'Eloquent de Laravel, vous pouvez rechercher des valeurs spécifiques dans les colonnes JSON à l'aide de la méthode WhereJsonContains. Cependant, votre requête initiale :

<code class="php">DB::table('emails')->whereJsonContains('to->emailAddress->address', '[email&#160;protected]')->get();</code>
Copier après la connexion

ne renvoie pas de correspondance car l'opérateur fléché (->) n'est pas valide dans les clés du tableau. Pour résoudre ce problème, utilisez plutôt des tableaux imbriqués :

<code class="php">DB::table('emails')
   ->whereJsonContains('to', [['emailAddress' => ['address' => '[email&#160;protected]']]])
   ->get();</code>
Copier après la connexion

Cette requête recherchera correctement les adresses e-mail égales à "[email protected]" et renverra la collection souhaitée.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal