我有一个按开始日期分组的事件列表(下面工作正常)。
$events = Event::select('*')->orderBy('start_date', 'desc')->get()->groupBy(function($date) {
return Carbon::parse($date->start_date)->format('dS F Y');
});
//current output
19/04/2018
Event 1
Event 2
18/04/2018
Event 3
Event 4
16/04/2018
Event 5
Event 6
我想要的是,将今天所有活动展示在列表之上(如下所示)。
//desired output
18/04/2018
Event 3
Event 4
19/04/2018
Event 1
Event 2
16/04/2018
Event 5
Event 6
会感激一些帮助。提前谢谢。
答案 0 :(得分:1)
使用此:
$today = Carbon::today()->format('dS F Y');
if($events->has($today)) {
$events->prepend($events->pull($today), $today);
}
答案 1 :(得分:0)
这有点粗糙,更多的是一个想法:-)。我不知道你的数据是如何构建的,也没有真正测试过这个等等,但你可以用收藏品来做这件事,我假设日期是关键,如果你不能做$item->date
首先创建一个包含所有今天不是日期的事件的集合
$eventsExcludingToday = $events->filter(function ($item, $key) {
return $key !== Carbon::now()->format('d/m/Y');
});
第二次获得今天的日期
$eventToday = $events->filter(function ($item, $key) {
return $key === Carbon::now()->format('d/m/Y');
})->first();
3rd将日期放在我们首先创建的集合的开头
$events = $eventsExcludingToday->prepend($eventToday);