Я пытаюсь найти записи по временному интервалу. В таблице есть столбцы типа 'date_from' и 'date_to', которые указывают дату начала и окончания события.
public function scopeByTimeInterval($query, $dateInterval)
{
$query->where(function ($query) use ($dateInterval) {
[$from, $to] = $dateInterval;
$query->where([
['date_from', '<=', $from],
['date_to', '>=', $to]
]);
$query->orWhere([
['date_from', '>=', $from],
['date_to', '<=', $to]
]);
$query->orWhereBetween('date_from', $dateInterval);
$query->orWhereBetween('date_to', $dateInterval);
});
}
, когда я использую запрос where
напрямую, проблем нет. Я могу видеть все события между этими датами. Но если я использую его как область действия, он возвращает мне все события в данном году и месяце, а не интервал.
Что может вызвать такое поведение? Или я что-то упустил?