我有一个雄辩的要求:
HealthItem::where('person_id', 1)
->orderBy('name', 'ASC')
->orderBy('date_in', 'DESC')
->get();
它返回如下结果:
[
{
"id": 26,
"name": "Test 1",
"date_in": "2020-06-24",
"date_end": "2020-09-24",
},
{
"id": 27,
"name": "Test 1",
"date_in": "2020-05-19",
"date_end": "2020-09-24",
},
{
"id": 28,
"name": "Test 2",
"date_in": "2020-09-19",
"date_end": "2020-09-24",
},
{
"id": 32,
"name": "Test 3",
"date_in": "2020-09-19",
"date_end": "2020-09-24",
}
]
我只想保留最近日期date_in
的不同项。 例如,使用date_in
=2020-06-24
保留test1
,并从结果中删除所有旧的test1
(这里是使用date_in
=2020-05-19
)
显然,这是一个例子。 可以有5个或更多的test1
,但我总是保留最近的date_in
有可能做到这一点吗?
您需要使用distinction
 ;方法。
HealthItem::where('person_id', 1)
->distinct('name')
->orderBy('name', 'ASC')
->orderBy('date_in', 'DESC')
->get();
检查文档