Lim*_*eat 6 relationship laravel eloquent laravel-5 route-model-binding
如何在 Laravel 中实现 BelongsToThrough 关系?
我有表:
**projects_table**
id
**categories_table**
id
project_id
**properties_table**
id
category_id
Run Code Online (Sandbox Code Playgroud)
类别属于项目
public function project(){
return $this->belongsTo('App\Project');
}
Run Code Online (Sandbox Code Playgroud)
属性属于类别
public function category(){
return $this->belongsTo('App\Category');
}
Run Code Online (Sandbox Code Playgroud)
我们怎样才能建立关系?
物业按类别属于项目
public function project(){
return $this->belongsToThrough('App\Project', 'App\Category');
}
Run Code Online (Sandbox Code Playgroud)
编辑问题。
因为我想在我的应用程序上进行多租户,而租户是 PORJECT。我想按项目分离类别和属性。
类别是属于项目财产是属于类别
所以我想通过类别在属性和项目之间建立关系。现在,我需要project_id在类别和属性表上添加:,我认为这不是正确的方法。
小智 5
hasOneThrough您想与像这样指定的所有键一起使用
public function project()
{
return $this->hasOneThrough(
Project::class,
Category::class,
'id', # foreign key on intermediary -- categories
'id', # foreign key on target -- projects
'category_id', # local key on this -- properties
'project_id' # local key on intermediary -- categories
);
}
Run Code Online (Sandbox Code Playgroud)
你的属性belongsTo不正确。属性属于类别。
public function category(){
return $this->belongsTo('App\Category','category_id');
}
Run Code Online (Sandbox Code Playgroud)
现在您可以从属性中获取项目,如下所示:
{{ $property->category->project->project_attribute }}
Run Code Online (Sandbox Code Playgroud)