Laravel Query:Builder.php第2258行中的BadMethodCallException:

时间:2016-05-14 06:12:52

标签: php mysql sql laravel laravel-5

我已经构建了一个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()

如果有人发现问题,请帮我找到解决方案。

2 个答案:

答案 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方法