laravel-检查事件是否与其他事件冲突

xiozqbni  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(253)

我有一个“员工暂停”表,其中包含员工轮班时的暂停。每行都有一个开始日期和结束日期列,它们是日期时间。
当我预约时,我选择新事件的范围,然后将请求发送到控制器,在那里我得到它们。我得检查一下约会的开始时间和结束时间之间是否有“暂停”。
应该是这样的:
员工暂停。开始日期=2018-10-03 08:00:00
员工暂停。结束日期=2018-10-03 08:30:00
$request->get('app\u start\u time')=2018-10-03 07:00:00
$request->get('app\u end\u time')=2018-10-03 10:00:00
我应该有一个返回的集合,其中有一行在两个请求时间之间有一个暂停。
我试过这个问题。我做错什么了?

$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\u pauses”表如下所示:
id-int(10)主键
员工id-内部(11)
开始日期-日期时间
结束日期-日期时间

9jyewag0

9jyewag01#

你需要 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();

相关问题