Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni la riga più recente con il gruppo di e Laravel

Il problema è che il set di risultati verrà prima raggruppato quindi ordinato . Puoi utilizzare la selezione nidificata per ottenere ciò che desideri.

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

Devi solo aggiungere il tuo where() clausole.