Recherche de colonnes JSON dans Laravel
Lorsque vous travaillez avec des colonnes JSON dans Laravel, la recherche de valeurs spécifiques peut être difficile. Voici une solution au problème fréquemment rencontré de localisation des e-mails dans un tableau JSON stocké dans une colonne "À".
Le problème :
Dans une table "e-mails" , une colonne « À » de type JSON contient des tableaux imbriqués représentant les adresses e-mail. L'objectif est de récupérer une collection de tous les e-mails envoyés à un destinataire particulier.
Tentative infructueuse :
Une première tentative de recherche à l'aide de la méthode WhereJsonContains de Laravel n'a abouti à aucune correspondance. . La requête "traduite" par :
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))
Solution :
La clé d'une recherche réussie réside dans la compréhension que l'opérateur fléché (->) ne travailler avec des tableaux. Pour les recherches JSON impliquant des tableaux, utilisez la syntaxe suivante :
DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()
Cette requête identifiera et renverra correctement tous les e-mails envoyés à l'adresse du destinataire spécifié.
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!