如何在 Laravel 中加载嵌套关系

How to load a nested relationship in Laravel

我有一个名为 CallbackRequest 的模型,该模型与 Loan 模型有关系,这是 CallbackRequest 模型的唯一关系。

回调模型:

public function loan() {

    return $this->belongsTo(Loan::class);
}

现在 Loan 模型本身与名为 Applicant 的第三个模型有关系。

贷款模式:

public function applicant() {

    return $this->belongsTo(Applicant::class);
} 

我的观点:

当我加载 CallbackRequest 时,我用它预先加载贷款模型,一切正常!但是现在我想知道是否有一种方法可以在我这样做时预先加载申请人模型:

现在我访问它是这样的:

$modelResults = PublicCallback::with('loan')->get();

我得到了所有带有预加载贷款的回调,但我的意思是,在这种情况下,当我预加载贷款时,我希望申请人也被加载!

有什么方法可以做到这一点吗?

您可以使用:

$modelResults = PublicCallback::with(['loan', 'loan.applicant'])->get();

参考:https://laravel.com/docs/5.5/eloquent-relationships#eager-loading

只是为了 post真实,还有另一种加载嵌套关系的方法,可以针对返回的模型完成,前提是您已正确设置关系:

帖子模型:

public function comments() {
    return $this->hasMany('App\Comment', 'quote_id', 'id');
}

评论模型:

public function user() {
    return $this->belongsTo('App\User');
}

然后您实际上可以通过绘制 post 但加载关系数组,通过与评论的关系推断用户,例如:

$post = \App\Post::find($post_id);
return $post->load(['comments','comments.user']);