Maison >base de données >tutoriel mysql >Comment rechercher des e-mails dans une colonne JSON dans 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!