php - Laravel 中如何避免时间重叠

标签 php mysql sql laravel laravel-5

我正在构建一个 Laravel 应用程序,在 Controller 中我想预订一个有一定时间间隔的房间,如果有人已经在该时间预订了该房间,它将禁止用户在该时间间隔内预订该房间。我该如何解决这个问题?

我在 Controller 中编写了一个查询来检查时间范围,但它无法正常工作。

Eg: if a user want to book a room from 12:00 to 12:30, but someone already has booked that room from 12:15 to 12:45, controller won't let book that room.

这是我的 Controller :

 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 !!
}

希望这有帮助。

关于php - Laravel 中如何避免时间重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37109138/

相关文章:

PHP 脚本不在本地主机上运行

php - 共享主机上的 403 Forbidden Laravel

MySql 从表格游戏中找到玩家 X 的 friend

sql - 获取刚刚添加的行的最佳方式。 Heroku + Node + Postgres

php - 首页病毒问题

php - MYSQL 查询计算每小时耗时

java - 在 Spring 宠物诊所切换数据库

C# MySQL 查询不工作

PHP group mysql select by 两列

Mysql 从 SQL 查询创建灵活的 View