我的事件模型中有以下方法用于我的事件:
public static function getEvents($perPage = 10)
{
$events = Event::where('active', '=', 1)->paginate($perPage);
return $events;
}
每个事件都有一个 start_date,我需要获取该开始日期并按周开始对视图中的结果进行分组,就像每个事件发生在一周的星期一一样。我的控制器中有这个:
public function index()
{
$events = Event::getEvents($perPage = 5);
$this->layout->content = View::make('events.index')->with('events', $events);
}
谁能帮我按周开始对这些事件进行分组?谢谢。
在使用以下方法获取一周的开始日期方面,我是其中的一部分:
foreach ($events as $event)
{
$start_date = DateTime::createFromFormat('Y-m-d', $event->start_date);
$week = $start_date->format('YW');
$monday = 1;
$day_offset = ($monday - $start_date->format('N'));
$week_commencing = $start_date->modify("$day_offset days");
$week_commencing = $week_commencing->format('jS F Y');
}
现在我只需要使用它来对事件进行分组,但我不知道该怎么做。
编辑:我觉得我越来越接近解决方案,但仍然需要一点帮助。我现在在我的控制器中有以下内容,它确实打印出 1 周开始然后所有事件但是当 var_dump(ing) $events->weeks_commencing 时对象中只有 1 个日期,所以我快到了。各位大侠有什么指点吗:
foreach ($events as $event)
{
$start_date = DateTime::createFromFormat('Y-m-d', $event->start_date);
$week = $start_date->format('YW');
$monday = 1;
$day_offset = ($monday - $start_date->format('N'));
$week_commencing = $start_date->modify("$day_offset days");
if (!array_key_exists($week, $events))
{
$events->weeks_commencing = (object) array(
'week' => $week_commencing->format('jS F Y')
);
}
}
编辑:好的,我现在在我的控制器中有这个。它越来越近了,但还不完全正确。
foreach ($events as $event)
{
$start_date = DateTime::createFromFormat('Y-m-d', $event->start_date);
$week = $start_date->format('YW');
$monday = 1;
$day_offset = ($monday - $start_date->format('N'));
$week_commencing = $start_date->modify("$day_offset days");
if (array_key_exists($week, $events))
{
$events = (object) array(
'week' => $week_commencing->format('jS F Y'),
'events' => array()
);
}
$events->events[] = $event;
}