【问题标题】:Lazy Eager Loading for third level relationship in LaravelLaravel 中第三级关系的延迟渴望加载
【发布时间】:2020-12-20 02:43:00
【问题描述】:

UserModel 有很多潜在客户,每个潜在客户可以有一个 propertyLead,每个 propertyLead 可以有很多附件。 下面列出了每个模型,

用户模型:

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

LeadsModel:

    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 但我无法理解如何访问附件关系PropertyLeadModel,

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

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

请帮助我理解。 谢谢。

【问题讨论】:

标签: laravel lazy-loading eager-loading eloquent-relationship


【解决方案1】:

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

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

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

由于线索和附件是“多”关系,它们将是您必须遍历以访问任何特定实例的集合。

【讨论】:

    【解决方案2】:

    试试这个,没测试过

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

    【讨论】:

      【解决方案3】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 2019-06-19
        • 2014-02-24
        • 1970-01-01
        • 2016-08-18
        • 2019-07-26
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 2016-05-02
        相关资源
        最近更新 更多