Schema::create('examples', function (Blueprint $table) {
...
$table->json('cars');
...
});
[
{
"name":"Sport",
"list":[
{
"id":1,
"name":"example"
},
{
"id":2,
"name":"example"
},
{
"id":3,
"name":"example"
}
]
},
{
"name":"Jeep",
"list":[
{
"id":4,
"name":"example"
},
{
"id":5,
"name":"example"
},
{
"id":6,
"name":"example"
}
]
}
]
$carIds= [1, 3, 5];
// вот так работает, но только если id передать как int, с массивом $carsIds уже не работает :/
Example::whereJsonContains('cars', ['list' => ['id' => 1]])->get()
Example::whereJsonContains('cars', $carIds)->get();
// пробовал хотя бы просто найти по первому элементу
Example::whereJsonContains('cars->0->list->0->id', $carIds)->get();
// это тоже не получилось
Example::whereJsonContains('cars->*->list->*->id', $carIds)->get();
$carsIds = [1, 2, 5];
$example = Example::query();
foreach ($carsIds as $carId) {
$example->whereJsonContains('cars', ['list' => ['id' => $carId]]);
}
$examples = $example->take(12)->get();
Example::whereJsonContains('cars', ['list' => ['id' => $carIds]])->get();