我有3个表:
- <
- 工作/gh><
- 类别/gh>
项目有作业,作业被分配给类别。作业表包含一个项目ID和一个类别ID,也就是说,作业链接到项目和类别。我的quetion:
- 如何在项目模型上建立关系以查询给定类别ID的项目
- 如何在类别模型上设置关系以查询项目
图
明白了!
查询项目模型上的类别。在这个关系中,表示可以查询所有类别记录他们的作业分配给。
// In Project model class
public function categories()
{
$relation = $this->hasManyThrough(
Category::class, // target model
Job::class, // intermediate model
'project_id', // column with project ID in jobs table
'id', // ID column in categories table
'id', // ID column in projects table
'category_id' // column with category ID in jobs table
);
// remove duplicates
$relation->getQuery()->distinct();
return $relation;
}
在类别模型上查询项目。在这个关系上,categories可以查询所有项目作业记录
// In Category model class
public function projects()
{
$relation = $this->hasManyThrough(
Project::class, // target model
ProjectJob::class, // intermadiate model
'category_id', // column with category ID in jobs table
'uuid', // ID column in projects table
'uuid', // ID column in categories table
'project_id' // column with project ID in jobs table
);
// remove duplicates
$relation->getQuery()->distinct();
return $relation;
}