laravel 5.1:如何从模型中获得嵌套关系?

时间:2016-05-28 05:28:52

标签: php laravel laravel-5.1 relationship

我有一个关于laravel模型关系的问题,并在雄辩的类中使用它们。我的问题是:

我有一个这样的模型:

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');
        }
}

现在,如果我想从" TransferFormsContent"用它的" transferForm"提供给员工。我怎么能这样做?

我现在如果我想得到" TransferFormsContent"只有" transferForm"我可以用这个:

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

但是如果我想让transferForm也与其员工一起呢?

2 个答案:

答案 0 :(得分:2)

好吧,我发现:

只有你能做到这一点:

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

现在你有来自" TransferFormsContent"的记录。用它的" transferForm"提供给员工。

答案 1 :(得分:1)

您可以使用带点符号的嵌套预先加载:

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

或者您可以使用闭包:

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

当您需要按员工排序或过滤

时,第二种方法很有用