只从日期字段集合中取出唯一的年份



所以我在我的个人历史网站上有一个模型,它是一个事件列表,获得记录很容易。

Timeline::all();
在模型中,有一个日期字段
$event_date

我想做的是找到所有唯一的年份并提取它们,这样我就可以使用像

这样的东西
@foreach ($years as $year)
...
@endforeach

我不擅长查询,我不知道如何使这个工作,我的思维过程是。

  1. 获取所有记录
  2. 按唯一年份筛选
  3. 只提取year元素的列表(1940,1941,1942…)

从那里我可以循环并显示在我的时间轴页面上。以上两点是我真正纠结的地方。

谢谢你的帮助。

您可以使用Collection::map()Collection::unique():

$uniqueYears = Timeline::all()->map(function($entry) { return $entry->event_date->year; })->unique();

确保event_dateCarbon实例:

class Timeline extends Model
{
protected $casts = [
'event_date' => 'datetime:Y-m-d',
];
}

最新更新