自定义验证规则,检查日期范围是不是已经被占用
Posted
技术标签:
【中文标题】自定义验证规则,检查日期范围是不是已经被占用【英文标题】:Custom validation rule , check if date range is already taken or not自定义验证规则,检查日期范围是否已经被占用 【发布时间】:2022-01-05 03:22:08 【问题描述】:我必须管理房屋租赁的预订,当我进行新预订时,开始日期和结束日期应该是免费的。
例如,如果我在 9 月 23 日至 9 月 28 日期间为客户预订,我无法在此日期内创建另一个预订。 我需要一个雄辩的查询来检查started_at 和ends_at(表单的)是否不包括在现有日期之间
【问题讨论】:
这能回答你的问题吗? How to query between two dates using Laravel and Eloquent? 我尝试了几个查询,但例如,如果我从 12 月 5 日到 12 月 8 日预订,然后我在 12 月 3 日到 12 月 10 日进行了新的预订,它不会出错。但从 12 月 6 日到 12 月 7 日,它出现了错误。我不知道如何提出这个请求 【参考方案1】:我想我找到了解决办法:
$bookings = DB::table('bookings')
->where(function ($q) use ($start, $end)
$q->where('started_at', '>=', $start)
->where('started_at', '<=', $end);
)
->orWhere(function ($q) use ($start, $end)
$q->where('ends_at', '>=', $start)
->where('ends_at', '<=', $end);
)
->orWhere(function ($q) use ($start, $end)
$q->where('started_at', '<', $start)
->where('ends_at', '>', $end);
)
->count();
【讨论】:
以上是关于自定义验证规则,检查日期范围是不是已经被占用的主要内容,如果未能解决你的问题,请参考以下文章