雄辩地获得最新的原始in join子句

时间:2018-09-10 18:08:02

标签: join laravel-5 eloquent laravel-5.2 query-builder

我使用的是laravel 5.2,我试图获得像下面这样的每个前键pmt_id的最新干预:

elements = driver.find_elements_by_class_name("ng-binding")
for element in elements:
    print(element.text)

但是我得到这个错误: 调用未定义的方法Illuminate \ Database \ Query \ JoinClause :: whereRaw()

我尝试其他方法,但是nothig对我有用。

对于表干预中的每个pmt_id,我们至少都有一条记录,我正在寻找与表PMT联接之前每个pmt_id的最后干预。 如何从最新的pmt_id(如SQL查询中的波纹管)的表干预中选择ID:

$res = $this->model->with('typo', 'nro', 'ctr', 'cad', 'pm')

            ->join('a2t_intervention',function ($join) use ($salar){
                    $join->on('a2t_intervention.pmt_id','=','a2t_pmt.id');
                    $join->whereRaw('a2t_intervention.pmt_id = (select max(`pmt_id`) from a2t_intervention)');
                $join->where('a2t_intervention.etat_intervention','like','nok');
                $join->whereIN('a2t_intervention.id_equipe_stt',$salar);

            });

1 个答案:

答案 0 :(得分:0)

错误是不言自明的-没有whereRaw方法。您可以尝试替换:

$join->whereRaw('a2t_intervention.pmt_id = (select max(`pmt_id`) from a2t_intervention)');

使用

$join->where('a2t_intervention.pmt_id',  '=',  \DB::raw("(select max(`pmt_id`) from a2t_intervention)"));

在后来的Laravel版本中,JoinClause扩展了Builder,因此whereRaw方法可用,但对于Laravel 5.2则不可用。