Я пытаюсь убедиться, что пользователь доступен в диапазоне часов, поэтому я проверяю, что время начала и окончания не находятся в пределах диапазонов, в которых пользователь недоступен.Я делаю это с Eloquent и MySQL, используя построитель запросов, что я оставил следующим образом.
У меня есть модель User, модель Day, модель RestrictedHour, у меня есть отношения, чтоУ пользователя есть много RestrictedHour, и RestrictedHour может произойти несколько дней.Итак, моя таблица limited_hours выглядит следующим образом:
restricted_hours
-restricted_hour_id type int
-day_id type int
-start_at type Time
-finish_at type Time
-user_id type Varchar
В моей пользовательской модели я добавил соответствующий метод для получения RestrictedHour:
public function restrictedHours()
{
return $this->hasMany('Babilonia\Models\RestrictedHour', 'restricted_hour_id', 'user_id');
}
, и я сделал следующий метод и запросв модель пользователя, чтобы проверить, доступна она или нет:
private function restrictedHoursForDate(string $date, string $startAt, string $finishAt)
{
$day = strtolower(date('D', strtotime($date)));
$dayId = Day::where('name', $day)->first()->day_id;
return $this->restrictedHours()
->where('day_id', $dayId)
->whereBetween('start_at', [$startAt, $finishAt])
->whereBetween('finish_at', [$startAt, $finishAt])
->get();
}
Это работает, когда я ввожу часы, равные часам базы данных, проблема в том, что она не проверяет, находится ли она в пределах указанногоДиапазон, он работает только тогда, когда они одинаковы.Как мне выполнить этот запрос, чтобы убедиться, что введенное время находится между start_at и finish_at?