JSON_CONTAINS()
fa esattamente quello che stai cercando:
Attualmente, il generatore di query di Laravel non fornisce un'API corrispondente. C'è una proposta di interni aperti per questo però.
Nel frattempo, puoi eseguire una query grezza:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Il che restituirebbe tutti gli utenti che hanno "rosso" nei loro meta->colors
campo JSON. Nota che il ->
operatore
richiede MySQL 5.7.9+.
Puoi anche chiamare whereRaw()
direttamente su un modello Eloquent.
Laravel 5.6
A partire dalla versione 5.6, il generatore di query di Laravel contiene un nuovo whereJsonContains
metodo.