Я делаю запрос, в котором родительская модель имеет несколько отношений.
Мой запрос возвращает правильные данные, когда я создаю только одну связь, которую я хочу отфильтровать, фильтр работает нормально.
some code before...
->with(['tickets' => function ($query) {
if (($this->request->has('tickets_initial_date') && !is_null($this->request->get('tickets_initial_date'))) && ($this->request->has('tickets_final_date') && !is_null($this->request->get('tickets_final_date')))) {
$query->whereBetween("tickets.created_at", ["{$this->request->get('tickets_initial_date')} 00:00:00", "{$this->request->get('tickets_final_date')} 23:59:59"]);
} else if ($this->request->has('tickets_initial_date') && !is_null($this->request->get('tickets_initial_date'))) {
$query->where("tickets.created_at", ">=", "{$this->request->get('tickets_initial_date')} 00:00:00");
} else {
$query->where("tickets.created_at", "<=", "{$this->request-
>get('tickets_final_date')} 23:59:59");
}
}])->get();
Если я добавлю другие отношения в with()
, это не отфильтрует нужные данные и вернет все.
код, который возвращает все без моих фильтров.
->with(['tickets' => function ($query) {
if (($this->request->has('tickets_initial_date') && !is_null($this->request-
>get('tickets_initial_date'))) && ($this->request->has('tickets_final_date') &&
!is_null($this->request->get('tickets_final_date')))) {
$query->whereBetween("tickets.created_at", ["{$this->request-
>get('tickets_initial_date')} 00:00:00", "{$this->request->get('tickets_final_date')}
23:59:59"]);
} else if ($this->request->has('tickets_initial_date') && !is_null($this->request-
>get('tickets_initial_date'))) {
$query->where("tickets.created_at", ">=", "{$this->request->get('tickets_initial_date')} 00:00:00");
} else {
$query->where("tickets.created_at", "<=", "{$this->request->get('tickets_final_date')} 23:59:59");
}
}])->with(['notes', 'groups.user'])->get();
единственная проблема - когда я добавляю больше отношений, как вы можете видеть в последнем блоке кода выше.
код, который я добавляю, чтобы получить остальные отношения:
->with(['notes', 'groups.user'])->get();
Я не знаю, что не так, это работает, но не с последними отношениями with()
:
->with(['notes', 'groups.user'])->get();