2015-03-28 2 views
0

Я установил отношения «один ко многим» со следующими моделями «Работа и шаги». У задания может быть много шагов, а Step принадлежит Job. Когда я иду запросить связь с Job::with('steps')->find(1), результаты отображаются, как и ожидалось с коллекциейL5 | Отношения Tinker Query

<MariasApp\Job #000000002b07ae180000000036b76e17> { 
     id: 1, 
     number: 59221, 
     customer_id: 5, 
     user_id: 17, 
     created_at: "2015-03-24 01:32:20", 
     updated_at: "2015-03-24 01:32:20", 
     steps: <Illuminate\Database\Eloquent\Collection #000000002b07ae070000000036b76e17> [ 
      <MariasApp\Step #000000002b07ae7b0000000036b76e17> { 
       id: 37, 
       job_id: 1, 
       body: "Eligendi reiciendis ratione labore sed.", 
       created_at: "2015-03-24 01:32:21", 
       updated_at: "2015-03-24 01:32:21" 
      } 
     ] 
    } 

Но когда я бегу Job::with('steps')->find(1)->body я получаю ответ null. Есть ли способ для меня вытащить только body из отношения?

ответ

1

Я предполагаю, что вы пытаетесь получить body из коллекции шагов. Вам нужно указать, с каким шагом вы пытаетесь работать. Либо использовать первый один

Job::with('steps')->find(1)->steps->first()->body

или что-то подобное в петле через них

$steps= Job::with('steps')->find(1)->steps->all(); 

foreach($steps as $step){ 
    echo step->body; 
} 

или к циклу через много рабочих мест и получить первый шаг каждого из них:

$jobs = Job::with('steps')->get(); 

foreach($jobs as $job){ 
    echo $jobs->steps->first()->body; 
} 
+0

Так оно и было, но у меня есть таблица с 50 заданиями, поэтому я не хочу ограничивать результат одним идентификатором задания. Кажется, что это не работает 'Job :: with ('steps') -> get() -> steps-> first() -> body' – RomeNYRR

Смежные вопросы