laravel цикл по коллекции

У меня есть этот код:

$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, но в цикле ничего нет.

замените $data = $data->waitingtimes(); от

 $data = $data->waitingtimes()->get(); 

Вы также можете попробовать следующее:

 $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; } 

замените $ data = $ data-> время ожидания (); от

$ data = $ data-> время ожидания () -> get ();