正在Laravel中重写SQL查询,但出现错误BadMethodCallException:调用未定义的方法



我正在尝试在Laravel中执行此查询。

SELECT DISTINCT curriculum.Course_Code, transcript.Course_Grade, transcript.Course_Comp, transcript.CWID 
FROM curriculum 
LEFT JOIN transcript 
ON curriculum.Course_Code = transcript.Course_Code AND transcript.CWID = "C38475920";

除了我不再使用静态CWID->"C38475920"。这就是我所拥有的:

public function getProgress($id){
return DB::table('curriculum')
->select('curriculum.Course_Code','transcript.Course_Comp', 'transcript.Term_Completed', 'transcript.Course_Grade')
->distinct('curriculum.Course_Code')
->leftJoin('transcript', 'curriculum.Course_Code','=','transcript.Course_Code')
->on('CWID', '=', $id)
->get();
}

该函数为该错误提供BadMethodCallException: Call to undefined method IlluminateDatabaseQueryBuilder::on() in file

我必须在我的模型中添加一些东西才能使用ON吗?

如果您想在联接上使用"where"风格的子句,可以在联接中使用where方法。这些方法不是比较两列,而是将列与值进行比较。

selectRaw方法可以代替select(DB::raw(…((。此方法接受一个可选的绑定数组作为其第二个参数。

DB::table('curriculum')
->selectRaw('DISTINCT curriculum.Course_Code, transcript.Course_Grade, transcript.Course_Comp, transcript.CWID')
->leftJoin('transcript', function ($leftJoin) use ($id) {
$leftJoin->on('curriculum.Course_Code', '=', 'transcript.Course_Code')
->where('transcript.CWID', '=', $id);
})
->get();

相关内容

  • 没有找到相关文章

最新更新