Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich die neueste Zeile mit group by und Laravel

Das Problem ist, dass die Ergebnismenge zuerst gruppiert wird dann bestellt . Sie können die verschachtelte Auswahl verwenden, um zu bekommen, was Sie wollen.

SQL-Abfrage:

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

Mit Laravel:

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

Sie müssen nur Ihr where() hinzufügen Klauseln.