Mysql
 sql >> Database >  >> RDS >> Mysql

Selezionare, dove contiene l'array JSON

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.