【发布时间】:2020-10-13 14:07:00
【问题描述】:
我遇到了在不同日期为同一房间预订酒店房间的问题。 假设,
id----room_id------checkindate---------checkoudate
1-----1001--------12-10-2020-----------15-10-2020
2-----1001--------16-10-2020-----------30-10-2020
订房
$room=Room::find($id);
// $booking=Booking::where('room_id',$room->id)->get();
$booking=DB::table('rooms')
->leftjoin('bookings','bookings.room_id','=','rooms.id')
->where([['bookings.check_in_date', '<', $request->c_in_date],['bookings.check_out_date', '<', $request->c_out_date]])
->orwhere([['bookings.check_in_date', '>', $request->c_in_date],['bookings.check_out_date', '>', $request->c_out_date]])
->get();
if($booking){
return redirect()->route('room.book_now',$id)->with('warning','Room already Booked');
}
现在的问题是,如果有人在 17-10-2020--20-10-2020 这个日期预订房间,它将被预订。但从逻辑上讲,它不能。如果在此期间已经预订了同一个房间,则会显示消息:“房间已预订”,否则进行下一次关闭。
我该如何解决这个问题? laravel 中的实际 SQL 查询是什么?
提前致谢!
【问题讨论】: