JSON_CONTAINS()
faz exatamente o que você está procurando:Atualmente, o construtor de consultas do Laravel não fornece uma API correspondente. Há uma proposta interna aberta por isso embora.
Enquanto isso, você pode executar uma consulta bruta:
\DB::table('users')->whereRaw(
'JSON_CONTAINS(meta->"$.colors", \'["red"]\')'
)->get();
Que retornaria todos os usuários que têm "vermelho" em suas
meta->cores
Campo JSON. Observe que o -> operador
requer MySQL 5.7.9+. Você também pode chamar o
whereRaw()
diretamente em um modelo Eloquent. Laravel 5.6
A partir da versão 5.6, o construtor de consultas do Laravel contém um novo
whereJsonContains
método.