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

问题描述 投票:0回答:1

我正在尝试在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 Illuminate\Database\Query\Builder::on() in file

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

sql laravel eloquent query-builder
1个回答
1
投票
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();

© www.soinside.com 2019 - 2024. All rights reserved.