Получите последние значения в GROUP BY, используя Laravel Rloquent ORM

Я пытаюсь понять, как работает LARvel Eloquent ORM, и рассматривал следующий запрос MySQL:

SELECT id, name, date FROM tablename GROUP BY name ORDER BY date 

Использование GROUP BY всегда возвращает самые старые значения name . Есть ли способ вернуть последнее значение?

Попробуйте выполнить следующий код,

 Tablename::select('id', 'name', DB::raw('max(date) as latest_date')) ->groupBy('name') ->orderBy('latest_date') ->get() 

Вот рабочий SQL-запрос, который получает только самые последние результаты, которые уникальны для того, что вы выбрали с помощью a.id = b.id – если вы хотите делать уникальные имена, то это будет имя a.name = b.name .

 SELECT DISTINCT a.* FROM tablename a LEFT JOIN tablename b ON a.id = b.id AND a.date < b.date WHERE b.date IS NULL