laravel循环集合

时间:2014-06-23 17:23:41

标签: php laravel laravel-4 blade

我有这段代码:

$data = new Restaurant(array('id' => $restaurant_id));
        $data = $data->waitingtimes();
        foreach($data as $oneTime){
            echo $oneTime->value;
        }
exit;

如您所见,我尝试为每个value打印$data属性,但结果为空。

然而,当我这样做时:

$data = new Restaurant(array('id' => $restaurant_id));
        $data = $data->waitingtimes();
        echo $data->first()->value; exit;

我得到了结果,因此$data绝对有值。

我试着在这里阅读basecollection类文档 https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Collection.php

但循环没有任何内容。

我还在这里阅读了conllection类文档http://laravel.com/api/source-class-Illuminate.Database.Eloquent.Collection.html#5-73 但是循环没有任何意义。

3 个答案:

答案 0 :(得分:4)

将<{1}}替换为

$data = $data->waitingtimes();

答案 1 :(得分:2)

你也可以试试这个:

$data = Restaurant::find($restaurant_id);

这只会给你一个Restaurant id,如果waitingtimes是关系/相关模型,那么你可以尝试这个(称为eager loading,比动态调用):

$data = Restaurant::with('waitingtimes')->find($restaurant_id);

然后你可以循环:

foreach($data->waitingtimes as $waitingtime) {
    echo $waitingtime->value;
}

答案 2 :(得分:1)

替换$ data = $ data-&gt; waitingtimes();由

$ data = $ data-&gt; waitingtimes() - &gt; get();