JSON_CONTAINS()
dělá přesně to, co hledáte:
Tvůrce dotazů Laravel aktuálně neposkytuje odpovídající API. Existuje otevřený interní návrh za to však.
Mezitím můžete provést nezpracovaný dotaz:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Což by vrátilo všechny uživatele, kteří mají ve svých meta->colors
"červenou". pole JSON. Všimněte si, že ->
operátor
vyžaduje MySQL 5.7.9+.
Můžete také zavolat whereRaw()
přímo na výmluvném modelu.
Laravel 5.6
Od verze 5.6 obsahuje nástroj pro tvorbu dotazů Laravel nový whereJsonContains
metoda.