所以我在我的个人历史网站上有一个模型,它是一个事件列表,获得记录很容易。
Timeline::all();
在模型中,有一个日期字段
$event_date
我想做的是找到所有唯一的年份并提取它们,这样我就可以使用像
这样的东西@foreach ($years as $year)
...
@endforeach
我不擅长查询,我不知道如何使这个工作,我的思维过程是。
- 获取所有记录
- 按唯一年份筛选
- 只提取year元素的列表(1940,1941,1942…)
从那里我可以循环并显示在我的时间轴页面上。以上两点是我真正纠结的地方。
谢谢你的帮助。
您可以使用Collection::map()
和Collection::unique()
:
$uniqueYears = Timeline::all()->map(function($entry) { return $entry->event_date->year; })->unique();
确保event_date
是Carbon
实例:
class Timeline extends Model
{
protected $casts = [
'event_date' => 'datetime:Y-m-d',
];
}