Красноречивое сравнение запросов между временами - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь убедиться, что пользователь доступен в диапазоне часов, поэтому я проверяю, что время начала и окончания не находятся в пределах диапазонов, в которых пользователь недоступен.Я делаю это с 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...