使用Laravel Eloquent ORM获取GROUP BY中的最新值

enc*_*nce 5 php orm laravel

我试图了解Laravel的Eloquent ORM是如何工作的,并且正在查看以下MySQL查询:

SELECT id, name, date FROM tablename GROUP BY name ORDER BY date
Run Code Online (Sandbox Code Playgroud)

使用GROUP BY始终返回最旧的值name.有没有办法返回最新的价值?

sul*_*man 6

尝试以下代码,

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


Lan*_*och 0

这是一个有效的 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
Run Code Online (Sandbox Code Playgroud)