Я пытаюсь понять, как работает 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