时间之间的雄辩查询比较

时间:2018-10-19 15:24:45

标签: mysql laravel eloquent

我正在尝试验证某个小时内某个用户是否有空,因此我正在验证开始时间和结束时间不在该用户不可用的范围内。我正在使用Eloquent和mysql,并使用查询生成器按照以下方式剩下的东西。

我有一个User模型,一个Day模型,一个RestrictedHour模型,我之间的关系是一个User有很多RestrictedHour,并且RestrictedHour可能会发生几天。 所以我的stricted_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之间?

0 个答案:

没有答案