데이터를 날짜별로 그룹화하고 정렬하고 싶습니다. 그런 다음 다음과 같은 배열로 전달하고 싶습니다.
이것은 내 질문입니다.
$events = Event::with('specifications', 'users', 'location')
->join('locations','location_id', '=', 'events.location_id')
->where('locations.zip', '=', $data['location'])
->where('date', '>=', $data['date'])
->orderBy('date')
->get();
다음과 같은 배열을 제공합니다.
[0] => Event Object
(
[...]
[attributes:protected] => Array
(
[id] => 1
[title] => yyy
[image] => img/event/default.jpg
[desc] => Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing eli
)
[....]
)
[1] => Event Object
(
[...]
[attributes:protected] => Array
(
[id] => 2
[title] => xxx
[image] => img/event/default.jpg
[desc] => Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing eli
)
[....]
)
그러나 나는 정렬되고 다음과 같이 그룹화 된 배열을 원합니다 (내 말이 무엇인지 알고 있습니다;)).
[0] = array(
[0] => date = xx.xx.xxxx
[1] => array (
Event Object ()
)
)
[1] = array(
[0] => date = yy.yy.yy
[1] => array (
Event Object ()
)
)
그래서 두 개의 루프에서 배열을 반복 할 수 있습니다. 하나는 날짜 용이고 다른 하나는 개체 용입니다. 이 나쁜 예처럼 :
foreach($event_by_date as $evendate){
<h2>$eventdate</h2>
foreach($eventdate as $event){
$event->name
$event->desc
... etc ...
}
}
laravel 및 eloquent 쿼리로 어떻게 이것을 수행합니까? 나는 laravel / php 닌자가 아닙니다;)
내 솔루션. 더 현명하게 할 수 있는지 알려주세요.
$data = Input::all();
$data['date'] = date("Y-m-d", strtotime($data['date']));
$events = Event::with('specifications', 'users', 'location')
->join('locations','location_id', '=', 'events.location_id')
->where('locations.zip', '=', $data['location'])
->where('date', '>=', $data['date'])
->orderBy('date')
->get();
$events_by_date = array();
$increment = 0;
foreach($events as $event){
$formatted_date = substr($event->date, 0, 10);
if(!isset($temp_date)){
$temp_date = $formatted_date;
} else {
if($temp_date != $formatted_date){
$increment++;
$temp_date = $formatted_date;
}
}
$events_by_date[$increment]['date'] = $formatted_date;
$events_by_date[$increment]['events'][] = $event;
}
return View::make('event.overview')->with('events_by_date', $events_by_date);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다