簡體   English   中英

如何避免Laravel中的時間重疊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM