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这不会提供问题的答案。一旦你有足够的钱,你将能够;相反-