通过多个 hasMany 关系检索所有记录
Retrieving all records through multiple hasMany relationships
抱歉标题模糊,我不确定是否有这个名称。
我的 Laravel 4 应用程序中的模型之间基本上具有以下关系:
User -----< Template -----< Job
(用户有很多模板,模板有很多工作)。
我想检索用户的所有工作(通过他们的 ID)。通常我会这样做:
Job::where('user_id', '=', Auth::user()->id);
但是作业和用户之间的 link 通过 templates
table 存在,所以我尝试这样做:
$jobs = Auth::user()->templates->jobs;
但这给了我关于 $jobs
属性 不存在的错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$jobs
在这种情况下如何检索用户的所有作业?我不想在 User
和 Job
之间建立关系,因为看起来我只是在复制已经存在的关系?
谢谢。
Laravel 具有 hasManyThrough 关系。如果User hasMany Template,Template hasMany Job,可以通过Template关系设置一个User hasMany Job。
用户模型:
public function jobs() {
return $this->hasManyThrough('Job', 'Template');
}
有了这种关系,您可以通过以下方式访问用户的职位:
$jobs = Auth::user()->jobs;
有了这个,它就不会复制已经存在的关系;它只是设置语法以按照您需要的方式使用现有关系。您无需更改任何字段或修改任何数据。
抱歉标题模糊,我不确定是否有这个名称。
我的 Laravel 4 应用程序中的模型之间基本上具有以下关系:
User -----< Template -----< Job
(用户有很多模板,模板有很多工作)。
我想检索用户的所有工作(通过他们的 ID)。通常我会这样做:
Job::where('user_id', '=', Auth::user()->id);
但是作业和用户之间的 link 通过 templates
table 存在,所以我尝试这样做:
$jobs = Auth::user()->templates->jobs;
但这给了我关于 $jobs
属性 不存在的错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$jobs
在这种情况下如何检索用户的所有作业?我不想在 User
和 Job
之间建立关系,因为看起来我只是在复制已经存在的关系?
谢谢。
Laravel 具有 hasManyThrough 关系。如果User hasMany Template,Template hasMany Job,可以通过Template关系设置一个User hasMany Job。
用户模型:
public function jobs() {
return $this->hasManyThrough('Job', 'Template');
}
有了这种关系,您可以通过以下方式访问用户的职位:
$jobs = Auth::user()->jobs;
有了这个,它就不会复制已经存在的关系;它只是设置语法以按照您需要的方式使用现有关系。您无需更改任何字段或修改任何数据。