【发布时间】:2015-11-18 15:47:26
【问题描述】:
我想使用当前时间与 db 数据检查时间重叠。我这样做是为了检查班次时间重叠,这里是我的数据库表示例
1 )date:1 shift:1 start_time 04:00 end_time 05:00
2)date:1 shift: 2 start_time 09:00 end_time 11:00
特定的一天有几个班次,当有人编辑或添加班次时,我想检查一天的班次是否重叠
这是我的代码
$shiftData = Shifts::where('time_sheet_id', '=', $timesheet_id->id)
->where('user_id', '=', $driver_id->id)
->where('role_id', '=', 1)
->whereBetween('shift_start_time', array($shift_start , $shift_end))
->whereBetween('shift_end_time' , array($shift_start , $shift_end))
->count();
$shift_start 和 $shift_end 是用户输入值。使用此代码,我正在检查计数是否为 0 时间不重叠。
所以我尝试添加时间 $shift_start :4:20 和 $shift_end 4:40,但是通过此查询,它的返回不重叠。但它应该重叠表当前有时间转移到 4 到 5 (start_time 04:00 end_time 05:00)
请告诉我如何在上述情况下进行此查询
【问题讨论】:
-
能否复制使用你的完整sql,可以在触发count()前使用toSql的方法;
-
@Svetlio:你的意思是我试过的 MySQL 查询?
-
是的,只是想看看生成了什么以及你希望它如何......
-
您的数据库中的
shift_start_time和shift_end_time列是什么数据类型?他们是 varchar2 吗? -
你的数据库中
shift_start_time是什么类型,$shift_start的格式是什么?
标签: php mysql laravel query-builder