【发布时间】:2020-06-24 08:46:04
【问题描述】:
我有一个集合,我已经能够排序返回给我,按用户 ID 和日期排序,问题是我需要获得一个具有最新日期的唯一用户,但我无法得到它. 这是我的 json:
{
"168": {
"created_at": "2019-01-23 12:40:26",
"user_id": 1,
"from": "form",
"name": "Pedro",
"lastname": "Pretgar",
"email": "pedro@demo.com"
},
"154": {
"created_at": "2019-06-28 13:34:21",
"user_id": 1,
"from": "form",
"name": "Pedro",
"lastname": "Pretgar",
"email": "pedro@demo.com"
},
"167": {
"created_at": "2019-01-31 17:33:26",
"user_id": 8,
"from": "gmail",
"name": "Lilian",
"lastname": "Houster",
"email": "lilian@demo.com"
},
"156": {
"created_at": "2019-06-08 12:14:42",
"user_id": 14,
"from": "form",
"name": "Jhon",
"lastname": "Cobra",
"email": "jhon@demo.com"
},
"38": {
"created_at": "2019-07-21 21:22:18",
"user_id": 14,
"from": "form",
"name": "Jhon",
"lastname": "Cobra",
"email": "jhon@demo.com"
},
"81": {
"created_at": "2019-09-25 10:24:34",
"user_id": 14,
"from": "form",
"name": "Jhon",
"lastname": "Cobra",
"email": "jhon@demo.com"
}
}
我需要这个结果:
{
"154": {
"created_at": "2019-06-28 13:34:21",
"user_id": 1,
"from": "form",
"name": "Pedro",
"lastname": "Pretgar",
"email": "pedro@demo.com"
},
"167": {
"created_at": "2019-01-31 17:33:26",
"user_id": 8,
"from": "gmail",
"name": "Lilian",
"lastname": "Houster",
"email": "lilian@demo.com"
},
"81": {
"created_at": "2019-09-25 10:24:34",
"user_id": 14,
"from": "form",
"name": "Jhon",
"lastname": "Cobra",
"email": "jhon@demo.com"
}
}
我试过,按日期排序,然后得到唯一值,问题是我不知道如何先按最新日期排序,然后得到唯一值。
$tmp = $users->sortBy(function($user) {
return [$user->user_id, $user->created_at];
})->unique('user_id');
【问题讨论】:
-
试试
groupBy('user_id)
标签: laravel collections