Laravel-检查某个事件是否与其他事件发生冲突

时间:2018-10-03 11:13:16

标签: mysql laravel

我有一个“ 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)

开始日期-日期时间

结束日期-日期时间

1 个答案:

答案 0 :(得分:2)

您需要Employee Pauses,其中request start_date and end_dateemployee_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();