如何按日期对查询进行排序和分组,并在Laravel中将其分组为数组

用户名

我想按日期对数据分组并对其进行排序。然后,我希望它在一个看起来像这样的数组中传递它:

这是我的查询:

$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
                        )
                     [....]
                  )

但是我想要一个这样的数组,它是sortet和分组的(您知道我的意思;)):

[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和雄辩的查询来做到这一点?我不是laravel / php ninja;)

用户名

我的解决方案。让我知道您是否会更聪明:

    $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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章