我有这段代码:
$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 但是循环没有任何意义。
答案 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();