我有一个“ employee_pauses”表,其中包含员工轮班期间的暂停。每行都有一个start_date和end_date col,它们是日期时间。
当我进行约会时,我选择新事件的范围,然后将请求发送到控制器,我在那里得到它们。我必须检查约会的开始和结束时间之间是否有“暂停”。
它应该像这样:
employee_pauses.start_date = 2018-10-03 08:00:00
employee_pauses.end_date = 2018-10-03 08:30:00
$ request-> get('app_start_time')= 2018-10-03 07:00:00
$ request-> get('app_end_time')= 2018-10-03 10:00:00
我应该有一个返回的集合,其中有1行在两次请求的时间之间有一个停顿。
我尝试了此查询。我在做什么错了?
$pauses = EmployeePause::whereRaw("((start_date < ? AND end_date > ?) OR (start_date < ? AND end_date > ?))", [$start_time, $start_time, $end_time, $end_time])
->where('employee_id', $request->get('employee_id'))->get();
我的“ employee_pauses”表如下:
id-int(10)primary_key
employee_id-int(11)
开始日期-日期时间
结束日期-日期时间
答案 0 :(得分:2)
您需要Employee Pauses
,其中request start_date and end_date
在employee_pause start_date and end_date
之间
我认为这就是您想要的。
$start_date = $request->app_start_time;
$end_date = $request->app_end_time;
$employee_id = $request->employee_id;
EmployeePause::where('id', $employee_id)
->whereBetween('start_date', [$start_date, $end_date])
->whereBetween('end_date', [$start_date, $end_date])
->get();