使用 Laravel Eloquent 查询最新记录
要检索给定表列中每个唯一值的最新记录,Laravel 的 Eloquent ORM提供了一个强大的解决方案。让我们看一下一个场景及其雄辩的解决方案:
场景:
考虑一个名为“snapshot”的表,其中包含“id”、“seller_id”、“金额”和“创建时间”。目标是检索每个不同“seller_id”的最新行。
雄辩查询:
$latestSales = Snapshot::select('seller_id') ->groupBy('seller_id') ->havingRaw('MAX(created_at)') ->orderBy('created_at', 'DESC') ->get();
解释:
备用查询(原始查询):
如果愿意,可以使用原始 SQL 查询来实现相同的效果结果:
SELECT * FROM snapshot WHERE (seller_id, created_at) IN ( SELECT seller_id, MAX(created_at) AS max_created_at FROM snapshot GROUP BY seller_id ) ORDER BY created_at DESC;
此查询使用子查询标识每个“seller_id”的最新行,以确定每个组内的最大“created_at”值。然后选择具有匹配的“seller_id”和“created_at”对(代表最新记录)的行,并按“created_at”降序排序,从而得到每个卖家的最新记录列表。
以上是如何在 Laravel Eloquent 中检索每个唯一值的最新记录?的详细内容。更多信息请关注PHP中文网其他相关文章!