对于酒店预订系统,我得到的是总房间数和预订房间数。
可用房间数为:5
用户预订的房间从:2018-02-22到:2018-02-24
但如果用户搜索日期25和26,则下面的计数为零。我的'<='
或'>='
一定有问题,但我找不到。
$reservedCount = Reservation::where('check_in', '>=', $checkin_date)->where('check_out', '<=', $checkout_date)->count();
$reservedCount = Reservation::
whereBetween('check_in', [$checkin_date, $checkout_date])
->whereBetween('check_out', [$checkin_date, $checkout_date])
->count();
上面的两个查询还将返回0我做错了什么?
$checkin_date
和$checkout_date
是用户输入的日期。 最佳答案
如果要查找(预订)范围重叠,应使用:
$reservedCount = Reservation::where('check_in', '<=', $checkout_date)
->where('check_out', '>=', $checkin_date)
->count();
请注意,对于酒店客房预订,您通常使用
<
和>
而不是<=
和>=
,因为一个客户可以在另一个客户退房的同一天办理入住手续。请注意
whereBetween('check_in', [$checkin_date, $checkout_date])
->orWhereBetween('check_out', [$checkin_date, $checkout_date])
找不到的重叠
check_in = 2018-02-10
check_out = 2018-02-20
$checkin_date = 2018-02-12
$checkout_date = 2018-02-18
因为
2018-02-10
和2018-02-20
都不在2018-02-12
和2018-02-18
之间。关于php - Laravel查询预留房间数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48920019/