Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez, où le tableau JSON contient

JSON_CONTAINS() fait exactement ce que vous cherchez :

Actuellement, le générateur de requêtes de Laravel ne fournit pas d'API correspondante. Il y a une proposition interne ouverte pour cela cependant.

En attendant, vous pouvez exécuter une requête brute :

\DB::table('users')->whereRaw(
    'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();

Ce qui renverrait tous les utilisateurs qui ont "rouge" dans leurs meta->colors Champ JSON. Notez que le -> opérateur nécessite MySQL 5.7.9+.

Vous pouvez également appeler le whereRaw() directement sur un modèle Eloquent.

Laravel 5.6

Depuis la version 5.6, le générateur de requêtes de Laravel contient un nouveau whereJsonContains méthode.