Laravel 中第三级关系的延迟加载

问题描述

usermodel 有许多线索,每个线索可以有一个 propertyLead,每个 propertyLead 可以有许多附件。 下面列出了每种型号,

用户模型:

  public function leads()
{
    return $this->hasMany('App\Models\Leads','fk_user_id');
}

潜在客户模型:

    public function propertyLead()
{
    return $this->hasOne('App\Models\PropertyLead','fk_lead_id');
}

PropertyLeadModel:

    public function attachments()
{
    return $this->hasMany('App\Models\Attachments','fk_property_lead_id');
}

现在,我正在使用 laravel 的 Lazy Eager Loading数据库中读取数据,到目前为止我能够访问 PropertyLeadModel 但我无法理解如何访问附件关系属性领导模型,

$leads = User::find(Auth::user()->id)->leads->load('propertyLead');

所以用户给了我线索,线索给了我 propertyLead,但无法理解如何深入到 propertyLeadModel 中的附件

请帮我理解。 谢谢。

解决方法

试试这个,没有测试

$leads = Auth::user()->leads->load('propertyLead','propertyLead.attachments');
,

您可以使用“点”表示法加载嵌套关系。

$user = Auth::user();
$user->load('leads.propertyLead.attachments');

// see all relationships loaded
dd($user);

由于潜在客户和附件是“许多”关系,因此它们将是您必须遍历才能访问任何特定实例的集合。

,

试试这个

User::with('leads.propertyLead.attachments')->where('id',Auth::user()->id)->first();