Например, у меня есть два запроса:
return $this->model->where('closed_at', null)
->whereHas('users', function ($query) {
$query->where('id', '=', auth()->user()->id);
})
->with(['product:id,title', 'in_works' => function ($query) {
$query->where('user_id', '=', auth()->user()->id);
}])
->get();
хорошо работает и возвращает 1 запрос с объединением (полная загрузка):
select * from `order` where `closed_at` is null and exists (select * from `user` inner join `user_order` on `user`.`id` = `user_order`.`user_id` where `order`.`id` = `user_order`.`order_id` and `id` = ?)
, но аналогично запрос
return $this->model->where('closed_at', null)
->with(['product:id,title', 'in_works' => function ($query) {
$query->where('closed_at', '=', null);
}])->get();
вернуть 3 запроса, почему?
select * from `order` where `closed_at` is null
select `id`, `title` from `product` where `product`.`id` in (1, 2)
select * from `in_work` where `in_work`.`order_id` in (1, 2) and `closed_at` is null