JSON_CONTAINS()
robi dokładnie to, czego szukasz:
Obecnie konstruktor zapytań Laravela nie zapewnia odpowiedniego API. Istnieje propozycja otwartych elementów wewnętrznych za to jednak.
W międzyczasie możesz wykonać nieprzetworzone zapytanie:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Który zwróci wszystkich użytkowników, którzy mają „czerwony” w swoich meta->kolorach
Pole JSON. Zauważ, że -> operator
wymaga MySQL 5.7.9+.
Możesz także wywołać whereRaw()
bezpośrednio na modelu Eloquent.
Laravel 5.6
Od wydania 5.6, konstruktor zapytań Laravela zawiera nowy whereJsonContains
metoda.