Laravel 中三级关系的延迟预加载
Lazy Eager Loading for third level relationship in Laravel
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。
请帮助我理解。
谢谢。
试试这个,未测试
$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();
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。
请帮助我理解。 谢谢。
试试这个,未测试
$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();