[英]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
列,名稱分別是start
和end
類型: 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.