在对象中添加标题

时间:2014-02-20 11:32:05

标签: php object laravel

我目前有一个对象数组,我试图对标题进行排序,例如,目前我有一个像这样的表格输出:

2014年2月1日 14时15分00秒 14时五十〇分00秒

2014年2月1日 14:50:00 15时25分○○秒

2014年2月2日 11时20分○○秒 12:30:00

2014年2月2日 12:30:00 13时05分00秒

2014年2月4日 十七时10分00秒 17点40分00秒

2014年2月4日 17:45:00 18时20分零零秒

但我正在寻找的是这样的东西:

2月1日

2014年2月1日 14时15分00秒 14时五十〇分00秒

2014年2月1日 14:50:00 15时25分○○秒

2月2日

2014年2月2日 11时20分○○秒 12:30:00

2014年2月2日 12:30:00 13时05分00秒

第4次

2014年2月4日 十七时10分00秒 17点40分00秒

2014年2月4日 17:45:00 18时20分零零秒

我正在使用laravel从数据库中检索这些对象,并且数组中的每个对象看起来都像这样:

object(Illuminate\Database\Eloquent\Collection)#922 (1) {
  ["items":protected]=>
  array(228) {
    [0]=>
    object(Lesson)#695 (20) {
      ["attributes":protected]=>
      array(16) {
        ["id"]=>
        string(4) "7312"
        ["date"]=>
        string(10) "2014-02-01"
        ["start_time"]=>
        string(8) "14:15:00"
        ["end_time"]=>
        string(8) "14:50:00"
      }
  }
  [1]=> etc...

有人知道是否有可能以这种方式组织标题?这是一个我忽略的简单功能吗?

2 个答案:

答案 0 :(得分:1)

据我所知,没有简单的功能可以做你想做的事情(一种分组)。假设您按日期排序(或者某些类似的日期在集合中组合在一起),您可以使用如下代码:

// controller action
public function index()
{
    // get all dates, ordered by date
    $_dates = Date::orderby('date')->get();

    $dates = [];
    $date = new Collection; // not really required, just feels nicer
    $curDate = false;

    foreach ($_dates as $_date) {
        // if we have a new date, store current collection in master array,
        // re-instantiate a blank collection, and set the current date
        if ($_date->date != $curDate) {
            if ($curDate !== false) {
                $dates[$curDate] = $date;
            }
            $date = new Collection;
            $curDate = $_date->date;
        }
        $date->push($_date);
    }

    return View::make('index', compact('dates'));
}

// view
@foreach ($dates as $date => $items)
    <h3>{{{ $date }}}</h3>
    <ul>
        @foreach ($items as $item)
            <li>{{{ $item->date }}} {{{ join(' ', $item->times) }}}</li>
        @endforeach
    </ul>
@endforeach

显然你可以将这个分组逻辑提取到辅助函数(并使变量名减少混乱!)

答案 1 :(得分:0)

好的是 - 从数据库中获取对象,遍历并将其注入视图,如下所示:

@foreach($collection as $object)
    <ul> 
    {{$date}}//or fetch date also
    <li>{{$object[0]["record"]}}</li>
    </ul>
@enforeach

@foreach($collection as $object)
    <ul> 
    {{$date}}//or fetch date also
    <li>{{$object[1]["record"]}}</li>
    </ul>
@enforeach

对于beeing generic,很抱歉,但是collection和object将是你的集合和对象名称/索引。