如何在Laravel中传递集合?

时间:2015-03-01 08:30:24

标签: php laravel eloquent laravel-5

我想我错过了很简单的事情。但我没有耐心寻求它,所以我需要问。

我正在尝试使用Event

类型的元素列表来呈现视图

在我看来,我有一个foreach循环

 @foreach ($events as $e)
    ......
    {{ $e->title }}
    ......
 @endforeach

控制器

    $account = Account::find(\Session::get('account'));
    $events = $account->events()->get();
    return view('events.index')->with('events', $events);

根据我的理解,它应该以这种方式工作。但相反,我得到了 为foreach()提供的参数无效

我也试过

    $account = Account::find(\Session::get('account'));
    $events = $account->events();
    return view('events.index')->with('events', $events);

但是在这种方法中,我的foreach循环甚至不会运行一次(没有错误)。

当然,我的模型中已经定义了所有内容。

帐户:

public function events()
{
    return $this->hasMany('App\Event');
}

一种有效的方法是将数据作为数组传递:

    $account = Account::find(\Session::get('account'));
    $events = $account->events()->get()->toArray();
    return view('events.index')->with('events', $events);

但是我需要在我的视图中使用数组索引,如下所示:

 @foreach ($events as $e)
    ......
    {{ $e['title'] }}
    ......
 @endforeach

我真的,真的不想这样做。

所以请告诉我我错过了什么。

更新: 我无法将$帐户传递到我的视图并在视图中使用$ account->事件,因为我需要在传递事件之前对事件执行一些过滤。

2 个答案:

答案 0 :(得分:0)

这样使用

$account = Account::find(\Session::get('account'));
$events = $account->events;
return view('events.index',['events'=> $events]);

答案 1 :(得分:0)

使用收集:

$account = Account::find(\Session::get('account'));
$events = $account->events;
return view('events.index', collect('events'))

;