首页 > 解决方案 > 如何在将时间存储为字符串的 laravel 中检查时隙是否冲突

问题描述

我正在研究一个插槽,我想检查给定时间是否与我的数据库的任何其他条目发生冲突。

这是我的示例数据库结构数据,两个时隙都存储为字符串,因此查询没有按预期响应。

time_slot_starts (varchar) time_slot_ends (varchar)
上午 9 点 上午 9.30 星期日
上午 9.30 上午 11.30 星期日
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();

这是我使用的查询,但它总是返回0

标签: phpmysqlsqllaraveltime

解决方案


我将存储时隙的值结构更改为24小时格式并存储为H:i:s


推荐阅读