У меня есть этот код:
$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 ();