我已经构建了一个laravel应用程序,在控制器中我正在检查时间重叠问题。
我使用的逻辑是在我的控制器查询中首先我将检查day_id是否已作为输入与该day_id与数据库匹配然后它将检查时间,如果它匹配,那么它不能让用户保存输入,否则如果查询失败,它将允许用户保存数据。
public function postAllocateRoom(Request $request)
{
$startTime = Carbon::parse(str_replace(array('am', 'pm'), ':00', $request->input('start')));
$endTime = Carbon::parse(str_replace(array('am', 'pm'), ':00', $request->input('end')));
$dayId = $request->input('day_id');
$timeExists = ClassRoom::where('day_id', $dayId)
->andWhere('start', $startTime)
->andWhere('end', $endTime)
->exists();
if($timeExists){
return redirect('allocateRoomPage')->withErrors(['time' => 'Class Room Already Taken']);
}
$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=$dayId;
$classRoom->start=$startTime;
$classRoom->end=$endTime;
$classRoom->save();
$request->session()->flash('success', 'Successfully allocated room');
return redirect('allocateRoomPage');
}
但是在我运行程序后,我看到以下错误:
Builder.php第2258行中的BadMethodCallException:调用undefined 方法Illuminate \ Database \ Query \ Builder :: andWhere()
如果有人发现问题,请帮我找到解决方案。
答案 0 :(得分:1)
没有andWhere
方法
简单的where(<...>)->where(<...>)
就像where <...> and where <...>
一样。
答案 1 :(得分:1)
只需使用
$timeExists = ClassRoom::where('day_id', $dayId)
->Where('start', $startTime)
->Where('end', $endTime)
->exists();
因为laravel中没有andWhere方法