如何在时间存储为字符串的 laravel 中检查时隙是否冲突
how to check time slots colliding or not in laravel where time are stored as string
我正在处理一个插槽,我想检查给定时间是否与我的数据库中的任何其他条目冲突。
这是我的示例数据库结构数据,两个时隙都存储为字符串,因此查询没有按预期响应。
time_slot_starts (varchar)
time_slot_ends (varchar)
day
9.00 am
9.30 am
Sunday
9.30 am
11.30 am
Sunday
Meetings::where(function ($query) use ($slot_start, $slot_end) {
$query->where(function ($query) use ($slot_start, $slot_end) {
$query->where('time_slot_starts', '<=', $slot_start)
->where('time_slot_ends', '>', $slot_start);
})
->orWhere(function ($query) use ($slot_start, $slot_end) {
$query->where('time_slot_starts', '<', $slot_end)
->where('time_slot_ends', '>=', $slot_end);
});
})
->count();
这是我使用的查询,但它总是 returns 0
。
我将存储时间段的值结构更改为24小时格式并存储为H:i:s
我正在处理一个插槽,我想检查给定时间是否与我的数据库中的任何其他条目冲突。
这是我的示例数据库结构数据,两个时隙都存储为字符串,因此查询没有按预期响应。
time_slot_starts (varchar) | time_slot_ends (varchar) | day |
---|---|---|
9.00 am | 9.30 am | Sunday |
9.30 am | 11.30 am | Sunday |
Meetings::where(function ($query) use ($slot_start, $slot_end) {
$query->where(function ($query) use ($slot_start, $slot_end) {
$query->where('time_slot_starts', '<=', $slot_start)
->where('time_slot_ends', '>', $slot_start);
})
->orWhere(function ($query) use ($slot_start, $slot_end) {
$query->where('time_slot_starts', '<', $slot_end)
->where('time_slot_ends', '>=', $slot_end);
});
})
->count();
这是我使用的查询,但它总是 returns 0
。
我将存储时间段的值结构更改为24小时格式并存储为H:i:s