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 protected]" } }, { "emailAddress": { "name": "Test 2", "address": "[email protected]" } } ]</code>
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 protected]')->get();</code>
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 protected]']]]) ->get();</code>
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!