sql >> Base de Datos >  >> RDS >> Mysql

Obtenga la fila más reciente con group by y Laravel

El problema es que el conjunto de resultados será primero agrupado entonces pedido . Puede usar la selección anidada para obtener lo que desea.

Consulta SQL:

SELECT t.* FROM (SELECT * FROM messages ORDER BY created_at DESC) t GROUP BY t.from

Con Laravel:

$messages = Message::select(DB::raw('t.*'))
            ->from(DB::raw('(SELECT * FROM messages ORDER BY created_at DESC) t'))
            ->groupBy('t.from')
            ->get();

Solo necesita agregar su where() cláusulas.