【发布时间】:2019-11-03 10:46:00
【问题描述】:
我正在使用 Laravel 6。 我有一个创建会议的表格。我想创建一个自定义验证器来检查当时房间是否已经被占用。查询参数为“room”、“date_meeting”、“start”和“end”。
换句话说,我想用 Laravel 进行以下 MySQL 查询:
SELECT *
FROM `meetings`
WHERE id_room = 1 AND date = '2021-03-02' AND ((start_hour >= '22:00:00' AND start_hour < '23:00:00') OR (start_hour < '22:00:00' AND end_hour >= '23:00:00') OR (end_hour > '22:00:00' AND end_hour <= '23:00:00'))
我用 Laravel 创建了以下查询,但它不能正常工作:
public function passes($attribute, $value)
{
$meetings = DB::table('meetings')
->where('id_room', request('room'))
->where('date', request('date_meeting'))
->where(function ($query) {
$query->where('start_hour', '>=', request('start'))
->where('start_hour', '<', request('end'));
})
->orWhere(function ($query) {
$query->where('start_hour', '<', request('start'))
->where('end_hour', '>=', request('end'));
})
->orWhere(function ($query) {
$query->where('end_hour', '>', request('start'))
->where('end_hour', '<=', request('end'));
})
->get();
if(count($meetings) > 0) {
return false;
} else {
return true;
}
}
房间和日期在 Laravel 中可以正常工作...但是时间不能正常工作。 你知道为什么它不能正常工作吗?
【问题讨论】: