【发布时间】:2016-09-03 02:44:09
【问题描述】:
我正在构建一个 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']);
$startTime = Carbon::parse($request->input('start'));
$endTime = Carbon::parse($request->input('end'));
$classRoom=DB::select('SELECT allocate_rooms.id
FROM allocate_rooms
WHERE '.$startTime.' BETWEEN allocate_rooms.start AND allocate_rooms.end')->count();
$messages ="Class Room Already Taken";
if ($classRoom>0) {
return redirect('allocateRoomPage');
}
else {
$classRoom->save();
return redirect('allocateRoomPage');
}
}
但我在保存到数据库时遇到以下错误:
Connection.php 第 673 行中的 QueryException:SQLSTATE[42000]:语法 错误或访问冲突:1064 您的 SQL 语法有错误; 检查与您的 MariaDB 服务器版本相对应的手册 在 '17:00:00 BETWEEN allocate_rooms.start 附近使用的正确语法 AND allocate_rooms.end' 在第 3 行(SQL:SELECT allocate_rooms.id FROM allocate_rooms WHERE 2016-05-08 17:00:00 BETWEEN allocate_rooms.start AND allocate_rooms.end)
我该如何解决这个问题?
【问题讨论】: