我正在尝试验证某个小时内某个用户是否有空,因此我正在验证开始时间和结束时间不在该用户不可用的范围内。我正在使用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之间?