У меня есть следующий метод в моей модели событий для моих событий:Группа События по неделе начинающееся в красноречивых
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');
}
Теперь мне просто нужно использовать, чтобы сгруппировать события, но я не знаю, как.
EDIT: Я чувствую, что приближаюсь к решению, но все же нуждаюсь в небольшой помощи. Теперь у меня есть ниже в моем контроллере, и он распечатывает 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')
);
}
}
EDIT: OK Теперь у меня это в моем контроллере. Он приближается, но не совсем прав.
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;
}