雄辩的get-latest-raw-in-join子句
我使用的是laravel 5.2,我试图获得每个外键pmt_id的最新干预,如以下所示:雄辩的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
$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)"));