我试图从mysql翻译这个查询
SELECT usuario_cia.idusuario_cia,usuario_cia.nombre,usuario_cia.fkcompania,
mobil_gps.idmobil_gps, mobil_gps.fkmobil,MAX(mobil_gps.fechahora), mobil_gps.bateria
FROM usuario_cia
INNER JOIN mobil_gps ON mobil_gps.fkusuario= usuario_cia.idusuario_cia
WHERE usuario_cia.fkcompania=24
GROUP BY idusuario_cia
ORDER BY mobil_gps.fechahora DESC;
到我的带有查询生成器的 Laravel 模型中的函数,我对最大值有一个大问题,现在我有这个:
$datos=$query->join('mobil_gps','mobil_gps.fkusuario','usuario_cia.idusuario_cia')
->select( 'usuario_cia.idusuario_cia','usuario_cia.nombre','usuario_cia.fkcompania',
DB::raw('mobil_gps.idmobil_gps'),DB::raw('mobil_gps.fechahora'), DB::raw('mobil_gps.fkmobil'),DB::raw('mobil_gps.bateria'))
->where('usuario_cia.fkcompania', $id_compania)
//->max(DB::raw('mobil_gps.fechahora'))
->groupBy('usuario_cia.idusuario_cia')
->orderBy(DB::raw('mobil_gps.fechahora'), 'desc')
->get()->toArray();
但是如果我解开最大部分,就会崩溃。
你能给我任何建议吗?
您必须在select()
中使用MAX()
:
->select(..., DB::raw('MAX(mobil_gps.fechahora)'), ...)
这也是查询中唯一需要DB::raw()
的地方。