[英]How to avoid time overlapping in laravel
我正在構建一個laravel應用程序,其中在控制器中我想預訂有一定時間間隔的房間,如果有人已經在那個時間預訂了該房間,它將禁止用戶在該時間間隔內預訂那個房間。 我該如何解決這個問題?
我已經在控制器中編寫了一個查詢來檢查時間范圍,但是它不能正常工作。
例如:如果用戶想在12:00至12:30預訂房間,但是某人已經在12:15至12:45預訂了房間,那么管理員將不會讓該房間預定。
這是我的控制器:
public function postAllocateRoom(Request $request)
{
$classRoom = new ClassRoom();
$classRoom->department_id=$request->Input(['department_id']);
$classRoom->room_id=$request->Input(['room_id']);
$classRoom->course_id=$request->Input(['course_id']);
$classRoom->day_id=$request->Input(['day_id']);
$classRoom->start=$request->Input(['start']);
$classRoom->end=$request->Input(['end']);
$startTime = Carbon::parse($request->input('start'));
$endTime = Carbon::parse($request->input('end'));
$room=DB::select('SELECT allocate_rooms.id
FROM allocate_rooms
WHERE "' . $startTime . '" BETWEEN allocate_rooms.start AND allocate_rooms.end AND
"' . $endTime . '" BETWEEN allocate_rooms.start AND allocate_rooms.end');
$messages ="Class Room Already Taken";
if ($room) {
return redirect('allocateRoomPage');
}
else {
$classRoom->save();
return redirect('allocateRoomPage');
}
}
以下邏輯檢查預訂時間間隔是否與當前分配房間的時間間隔沖突。 這只是邏輯,您可能需要適當修改。
if (($booking_start_time < $allocated_room_start_time && $booking_end_time < $allocated_room_start_time) || ($booking_start_time > $allocated_room_end_time && $booking_end_time > $allocated_room_end_time)) {
// No time clash
}else{
// Time clashed !!
}
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.