2016-05-28 4 views
2

У меня есть вопрос о отношениях модели laravel и использования их в красноречивом классе. мой вопрос заключается в следующем:laravel 5.1: как я могу получить вложенные отношения от модели?

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

class TransferFormsContent extends Model 
{ 

public function transferForm() 
    { 
     return $this->belongsTo('App\TransfersForms','form_id'); 
    } 
} 

и transferForm я иметь другую сторону для этого отношения, как это:

public function transferFormsContent() 
{ 
    return $this->hasMany('App\TransferFormsContent', 'form_id', 'id'); 
} 

также в transferForm у меня есть еще одно соотношение с таким сотрудником:

class TransfersForms extends Model 
{ 
    public function employee() 
     { 
      return $this->belongsTo('App\User','employee_id'); 
     } 
} 

сейчас, если я хочу получить запись от «Передача FormsContent "с его« transferForm »предоставил свой сотрудник. Как я могу это сделать?

я теперь, если я хочу получить «TransferFormsContent» только «transferForm» я могу использовать из этого:

$row = $this->model 
      ->with('transferForm'); 

, но как насчет того, если я хочу transferForm быть с работником?

+0

Помогает ли вам [hasManyThrough] (https://laravel.com/docs/5.2/eloquent-relationships#has-many-through)? – Rifki

ответ

2

нормально я считаю, что:

только вы можете сделать это с этим:

$row = $this->model 
      ->with('transferForm.employee') 

теперь у вас есть запись от «TransferFormsContent» с его «transferForm» предоставил своим с работником.

1

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

$row = $this->model 
     ->with('transferForm.employee'); 

Или вы можете использовать закрытие:

$row->$this->model 
     ->with(['transferForm' => function($q) { 
       $q->with('employee') 
}]); 

Второй метод полезен, когда вам нужно сортировать или фильтровать по сотруднику

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