雄辩的get-latest-raw-in-join子句

雄辩的get-latest-raw-in-join子句,join,laravel-5,eloquent,laravel-5.2,query-builder,Join,Laravel 5,Eloquent,Laravel 5.2,Query Builder,我使用的是laravel 5.2,我试图获得每个外键pmt_id的最新干预,如以下所示: $res = $this->model->with('typo', 'nro', 'ctr', 'cad', 'pm') ->join('a2t_intervention',function ($join) use ($salar){ $join->on('a2t_intervention.pmt_id','=','a

我使用的是laravel 5.2,我试图获得每个外键pmt_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);

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

我试着用其他的方法,但没有什么对我有用

对于表干预中的每个pmt_id,我们至少有一条记录,我正在寻找在与表pmt进行连接之前获取每个pmt_id的最后一次干预。 如何在sql查询中从最新的pmt_id中的表干预中选择id,如下图所示:

SELECT t.*
  FROM ( SELECT pmt_id
              , MAX(id) AS id
           FROM a2t_intervention 
           WHERE etat_intervention = 'nok' 
            AND `id_equipe_stt` IN ('" . implode(',', $id_equipe_stt) . "')
         GROUP
             BY pmt_id ) AS m
INNER JOIN a2t_intervention AS t
    ON t.pmt_id = m.pmt_id
   AND t.id = m.id

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

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


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

当我使用你的答案时,我没有得到结果,当我不使用这一行时,我得到21个结果。如何在连接之前从一个t_干预中选择pmt_id,MAX(id)作为id。
$join->where('a2t_intervention.pmt_id',  '=',  \DB::raw("(select max(`pmt_id`) from a2t_intervention)"));