Laravel 使用Eloquent在每组结果中选择最新的行

Laravel 使用Eloquent在每组结果中选择最新的行,laravel,eloquent,Laravel,Eloquent,对于示例模型,我有以下数据: id | object_id | value | updated_at ------------------------------------------------------ 1 | 1 | 200 | 2021-04-19 01:00:00 2 | 2 | 1200 | 2021-04-08 01:00:00 3 | 3 | 9000 | 2021-04-07 01:00:00 4 |

对于
示例
模型,我有以下数据:

id | object_id | value | updated_at
------------------------------------------------------
 1 |         1 |   200 | 2021-04-19 01:00:00
 2 |         2 |  1200 | 2021-04-08 01:00:00
 3 |         3 |  9000 | 2021-04-07 01:00:00
 4 |         1 |   100 | 2021-04-10 01:00:00
 5 |         2 |   900 | 2021-04-13 01:00:00
 6 |         3 |  8000 | 2021-04-12 01:00:00
我想获得按对象id分组的最新更新行,例如:

id | object_id | value | updated_at
------------------------------------------------------
 1 |         1 |   200 | 2021-04-19 01:00:00
 5 |         2 |   900 | 2021-04-13 01:00:00
 6 |         3 |  8000 | 2021-04-12 01:00:00
我怎样才能用雄辩来达到这个效果呢?

你试过了吗

$users = User::orderBy('updated_at','DESC')
            ->groupBy('object_id')
            ->get();

答案不是关于这个问题。这会给出一个错误:SELECT list不在GROUP BY子句中,并且包含未聚合的列“id”。我认为这是因为活动字符串模式,尝试获取所有列,但SQL允许在严格模式请求中仅选择GROUP BY column,Try:config/database.php中的'strict'=>false这不会提供问题的答案。一旦你有足够的钱,你将能够;相反-