我有一种情况,用户会将时间间隔保存在数据库中,这意味着计划不会影响其他时间。
例如:如果教室已经预订了上午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
如果您想在服务器端检查它,您应该向DB发出额外的检查时间请求。
$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';
}
您可以在保存时检查是否采用了间隔,此外,您还可以预先提取现有的间隔,以在客户端显示它们。