簡體   English   中英

PHP-Laravel:如何在數據庫中節省時間而不重疊

[英]PHP - Laravel : How to save without time overlapping in DB

我有一種情況,用戶將在數據庫中保存時間間隔,這意味着它不會影響其他人的時間。

例如:如果教室已被預訂為上午7:00至上午8:00,則用戶無法在該時間段之間節省時間,這意味着用戶無法在該時間段內節省7:30至8:30。

如何檢查時間間隔並將其保存在laravel中?

這是我的控制器:

 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']);        
            $classRoom->save();            
            return redirect('allocateRoomPage'); 
    }

我的數據庫中有two列,名稱分別是startend類型: Time

如果要在服務器端進行檢查,則應向數據庫發出其他請求以檢查時間。

$startTime = Carbon::parse($request->input('start'));
$endTime = Carbon::parse($request->input('end'));

$classRoomCount = ClassRoom::where(function ($query) {
    $query->where('start', '>=', $startTime)
          ->where('end', '<=', $startTime);
})->orWhere(function ($query) {
    $query->where('start', '>=', $endTime)
          ->where('end', '<=', $endTime);
})->count();

if ($classRoomCount > 0) {
    echo 'Classroom is already booked';
}

您可以檢查保存時是否使用了間隔,此外,還可以事先提取現有間隔以在客戶端顯示它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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