JSON_CONTAINS()
hace exactamente lo que estás buscando:
Actualmente, el generador de consultas de Laravel no proporciona una API correspondiente. Hay una propuesta interna abierta para eso sin embargo.
Mientras tanto, puede ejecutar una consulta sin formato:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Lo que devolvería todos los usuarios que tienen "rojo" en sus meta->colors
campo JSON. Tenga en cuenta que el ->
operador
requiere MySQL 5.7.9+.
También puede llamar al whereRaw()
directamente en un modelo Eloquent.
Laravel 5.6
A partir de la versión 5.6, el generador de consultas de Laravel contiene un nuevo whereJsonContains
método.