JSON_CONTAINS()
doet precies wat u zoekt:
Momenteel biedt de querybuilder van Laravel geen bijbehorende API. Er is een open internals voorstel er wel voor.
In de tussentijd kunt u een onbewerkte zoekopdracht uitvoeren:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Dat zou alle gebruikers retourneren die "rood" in hun meta->colors
hebben JSON-veld. Merk op dat de ->
telefoniste
vereist MySQL 5.7.9+.
Je kunt ook de whereRaw()
. aanroepen direct op een Eloquent model.
Laravel 5.6
Vanaf release 5.6 bevat Laravel's querybuilder een nieuwe whereJsonContains
methode.