【问题标题】:How to load a nested relationship in Laravel如何在 Laravel 中加载嵌套关系
【发布时间】:2018-06-03 01:39:00
【问题描述】:

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

回调模型:

public function loan() {

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

现在 Loan 模型本身与称为申请人的第三个模型有关系。

贷款模式:

public function applicant() {

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

我的观点:

当我加载 CallbackRequest 时,我用它来急切地加载贷款模型,一切都很好!但现在我想知道是否有办法在我这样做时预先加载申请者模型:

现在我像这样访问它:

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

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

有没有办法做到这一点,有可能吗?

【问题讨论】:

    标签: php laravel model relationships


    【解决方案1】:

    你可以这样做:

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

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

    【讨论】:

    • 很好很好很好
    【解决方案2】:

    为了后代,还有另一种加载嵌套关系的方法可以针对返回的模型执行,前提是您已正确设置关系:

    帖子模型:

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

    评论模型:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 2017-09-30
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2020-05-10
      相关资源
      最近更新 更多