Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie aus, wo JSON Array enthält

JSON_CONTAINS() macht genau das, wonach Sie suchen:

Derzeit stellt der Query Builder von Laravel keine entsprechende API bereit. Es gibt einen Vorschlag für offene Interna dafür aber.

In der Zwischenzeit können Sie eine Rohabfrage ausführen:

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

Was alle Benutzer zurückgeben würde, die "rot" in ihren meta->colors haben JSON-Feld. Beachten Sie, dass der -> Betreiber erfordert MySQL 5.7.9+.

Sie können auch whereRaw() aufrufen direkt auf einem Eloquent-Modell.

Laravel 5.6

Ab Version 5.6 enthält Laravels Query Builder einen neuen whereJsonContains Methode.