Implementação whereIn do Laravel de whereJsonContains
Aug 19 2020
Eu tenho este código que funciona bem e retorna uma coleção de item:
$myCollection = MyModel::whereJsonContains('payload->ProductCode->id', "1")->get();
No entanto, quero buscar $ myCollection não apenas quando o valor for 1, mas quando estiver contido em um dos muitos itens da matriz.
$array = [0 => 1, 1 => 2, 2 => 3]; $myCollection = MyModel::whereJsonContains('payload->ProductCode->id', $array)->get();
ATUALIZAÇÕES Quando tento este código, ele retorna dados vazios. Quero dizer, quando uso 1 em vez de "1" . Poderia ser esse o motivo pelo qual não funciona quando uso um array?
$myCollection = MyModel::whereJsonContains('payload->ProductCode->id', 1)->get();
Uma amostra do que a carga útil contém é esta. Suponho que isso poderia dar mais clareza à minha pergunta:
{
"ProductCode": {
"id": "1",
"name": "My Service",
}
}
Executar o código acima retorna dados vazios. Como faço para corrigir isso, por favor?
Respostas
1 DilipHirapara Aug 19 2020 at 08:43
Você precisa seguir sua consulta conforme abaixo.
$array = [0 => 1, 1 => 2, 2 => 3]; // Eloquent PaymentTransaction::whereJsonContains('payload->ProductCode->id',$array)->get();;
// or
PaymentTransaction::jsonContains('payload->ProductCode->id', $array)->get();
você pode tentar como abaixo também.
$array = [0 => 1, 1 => 2, 2 => 3];
$array = array_values(array_map('strval',$array));
PaymentTransaction::where(function ($query) use ($array) {
foreach ($array as $id) {
$query->orWhereJsonContains('payload->ProductCode->id', $id);
}
})->get();
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas