Фильтр Laravel с инструкцией where

#laravel #filter

#laravel #Фильтр

Вопрос:

У меня есть этот код в моем контроллере, и результат таков

 $list = ShopDepartment::with('shop','grocery', 'dailylist')->get();
        return $list;
  

Пример вывода для первого элемента таков

 {
"id": 2,
"shop_id": 1,
"name": "Grønt",
"order": "2",
"created_at": "2020-10-12 14:03:57",
"updated_at": "2020-10-12 14:03:57",
"shop": {
"id": 1,
"name": "Netto",
"address": null,
"type": null,
"created_at": "2020-10-12 14:04:35",
"updated_at": "2020-10-12 14:04:35"
},
"grocery": [],
"dailylist": []
},
  

Но если я хочу отфильтровать выходные shop.id данные, это мне не позволит. Есть идеи, как это сделать? Я предполагаю, что я не могу фильтровать его таким образом…

 $list = ShopDepartment::with('shop','grocery', 'dailylist')->where('shop.id', 1)->get();
        return $list;
  

Ответ №1:

Вы могли бы попробовать что-то вроде этого:

 $list = ShopDepartment::with(['shop' => function($query) {
  $query->where('id', 1);
}, 'grocery', 'dialylist'])->get();