Usuing Join, Max + groupЗаказатьBy Query Builder Laravel - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь перевести этот запрос из 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 с помощью Query Builder, у меня есть большая проблема с max, rigth, теперь у меня есть это:

$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();

но если я откомментирую максимальную часть, произойдет сбой.

Не могли бы вы дать мне какое-нибудь предложение?

1 Ответ

0 голосов
/ 14 мая 2018

Вы должны использовать MAX() в select():

->select(..., \DB::raw('MAX(mobil_gps.fechahora)'), ...)

Это также только место в вашем запросе, где вам нужно DB::raw().

...