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.