Laravel 8.x,3个模型和多对多关系
我是拉雷维尔的新手,尝试以下几点: 我有这些桌子: 学科:id |名称 专业:id |名称 类别:id |名称 专业(透视表):id |专业|专业| id 学科模式:Laravel 8.x,3个模型和多对多关系,laravel,eloquent,pivot,many-to-many,Laravel,Eloquent,Pivot,Many To Many,我是拉雷维尔的新手,尝试以下几点: 我有这些桌子: 学科:id |名称 专业:id |名称 类别:id |名称 专业(透视表):id |专业|专业| id 学科模式: public function specialties() { return $this->belongsToMany(Specialty::class); } 专业模式: public function disciplines() { return $this-&g
public function specialties()
{
return $this->belongsToMany(Specialty::class);
}
专业模式:
public function disciplines()
{
return $this->belongsToMany(Discipline::class);
}
我的问题是:
如何将类别与透视表规程\专业关联(多对多),以便使用规程和专业ID访问类别名称?
我曾经想到了一个额外的数据透视表,它链接了类别id和专业id,但我不知道这是否是最好的解决方案以及如何做到这一点。你有什么建议吗?非常感谢您的帮助。您可以介绍一个连接/轴心模型,该模型将把这三个关系关联为一对一/归属到学科/专业/类别中的一对多/拥有多
Discipline Speciality Category
\\ || //
\\ || //
DisciplineSpecialityCategory
此规程特殊类别
模型将具有以下属性或FK
表:学科、专业、类别
- 纪律处分
- 专业知识
- 类别识别码
class Discipline extends Model
{
public function disciplineSpecialityCategory()
{
return $this->hasMany(DisciplineSpecialityCategory::class, 'id', 'discipline_id');
}
}
class Speciality extends Model
{
public function disciplineSpecialityCategory()
{
return $this->hasMany(DisciplineSpecialityCategory::class, 'id', 'speciality_id');
}
}
class Category extends Model
{
public function disciplineSpecialityCategory()
{
return $this->hasMany(DisciplineSpecialityCategory::class, 'id', 'category_id');
}
}
class DisciplineSpecialityCategory extends Model
{
public function discipline()
{
return $this->belongsTo(Discipline::class, 'id', 'discipline_id');
}
public function speciality()
{
return $this->belongsTo(Speciality::class, 'id', 'speciality_id');
}
public function category()
{
return $this->belongsTo(Category::class, 'id', 'category_id');
}
}
你能确认每个学科和专业的组合也有一个类别吗?或者它可以保持没有类别。任何学科和专业的结合都会有一个类别。看起来很有效,谢谢!