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

Comment rechercher efficacement des e-mails dans une colonne JSON à l'aide de Laravel ?

Patricia Arquette
Libérer: 2024-10-29 08:07:02
original
312 Les gens l'ont consulté

How to Effectively Search for Emails in a JSON Column using Laravel?

Recherche de colonnes JSON avec Laravel

La capacité de rechercher efficacement des données dans les colonnes JSON est cruciale pour exploiter la puissance des bases de données modernes. Dans ce scénario, nous sommes confrontés au défi de rechercher des e-mails stockés dans une colonne JSON. L'objectif est de récupérer une collection de tous les e-mails envoyés à un destinataire particulier.

Initialement, une tentative a été effectuée en utilisant la méthodewhereJsonContains, qui, lorsqu'elle est transmise à un chemin et une valeur JSON appropriés, devrait filtrer les résultats en conséquence. Cependant, l'approche a échoué, ce qui laisse penser que le chemin JSON peut être incorrect ou que la méthode nécessite un formatage spécifique.

Une inspection plus approfondie de la traduction de la requête dans la barre de débogage révèle la requête réelle exécutée par la base de données :

<code class="sql">select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))</code>
Copier après la connexion

Après une enquête plus approfondie, il devient évident que l'opérateur fléché (->) n'est pas pris en charge lorsque vous travaillez avec des tableaux dans des chemins JSON. Cela constitue un élément clé pour résoudre le problème.

L'approche alternative consiste à utiliser une requête JSON correctement formatée. La syntaxe correcte pour rechercher dans un tableau consiste à utiliser deux crochets (`[[]]) :

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

Avec cet ajustement, la requête se traduira correctement par :

<code class="sql">select * from `emails` where json_contains(`to`, '{"emailAddress":{"address":"[email protected]"}}')</code>
Copier après la connexion

En utilisant cette syntaxe modifiée, la collection souhaitée d'e-mails envoyés au destinataire spécifié peut être récupérée efficacement.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal