首页 > 解决方案 > 使用 eloquent 获取特定列的最新数据

问题描述

如何获取每个特定 user_id 的最新/最新数据。

提交表

ID 用户身份 地位 created_at 更新时间
1 3 重做 某个日期时间 某个日期时间 =>dont want this
2 3 重做 某个日期时间 某个日期时间
3 4 重做 某个日期时间 某个日期时间
4 5 重做 某个日期时间 某个日期时间

ID 2 不是冗余。我正在跟踪记录。我需要获取 id 2,3,4。我试过使用

Submission::where('status','redo')->distinct('user_id')->get();

但它返回所有值

更新

供参考,这里是表的真实结构

提交表

如您所见,user_id 78 有 2 个重做,即 89 和 90。我试图获得最新/最后一个,即 90。

标签: laraveleloquentgreatest-n-per-group

解决方案


您可以使用子查询尝试此操作:

Submission::from(Submission::orderBy('id', 'desc'), 't')
    ->groupBy('user_id')
    ->get();

可能必须进行调整,未经测试,但想法是子查询将获得排序,然后主查询将进行分组。


推荐阅读