Я хочу отфильтровать данные, данные из eloquent laravel. У меня есть 4 выбора даты на мой взгляд, и я хочу, чтобы каждый из них заполнил и имел дату изменения запроса. Это мой код в контроллере
if ($start_publish && $end_publish && $start_close && $end_close) {
$data = Tender::where('published_at','>=',$start_publish)->where('published_at','<=',$end_publish)->where('closed_at','>=',$start_close)->where('closed_at','<=',$end_close);
}elseif (!$start_publish && $end_publish && $start_close && $end_close) {
$data = Tender::where('published_at','<=',$end_publish)->where('closed_at','>=',$start_close)->where('closed_at','<=',$end_close);
} elseif ($start_publish && !$end_publish && $start_close && $end_close) {
$data = Tender::where('published_at','>=',$start_publish)->where('closed_at','>=',$start_close)->where('closed_at','<=',$end_close);
} elseif (!$start_publish && !$end_publish && $start_close && $end_close) {
$data = Tender::where('closed_at','>=',$start_close)->where('closed_at','<=',$end_close);
} elseif ($start_publish && $end_publish && !$start_close && $end_close) {
$data = Tender::where('published_at','>=',$start_publish)->where('published_at','<=',$end_publish)->where('closed_at','<=',$end_close);
}
elseif ($start_publish && $end_publish && $start_close && !$end_close) {
...
...
...
} else {
$data = Tender::get();
}
Поскольку у меня есть 4 входа, число состояний для условия равно 16, а код грязный.
У кого-нибудь есть идея рефакторинг кода?