我需要一些帮助制作音乐库数据库
我有3个表相册,艺术家,角色
我希望艺术家能够为每张专辑发挥作用。
喜欢:
艺术家1作为专辑1的作曲家,也作为专辑2的编曲者或作为专辑3的作曲家和编曲者工作
数据库应该怎么样?和什么类型的关系?
答案 0 :(得分:2)
在您当前的架构中,您将无法根据相册标记艺术家的角色。
由于您的表中没有关系来定义artist_role
表中的条目是针对特定专辑的。那么,我建议创建一个包含 role_id
, artist_id
和 album_id
。
要将此中间表与laravel的manyToMany
关系一起使用,您可以在模型中定义将一个属性指定为pivot属性的方法。
对于,例如在艺术家模型:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
为其他模型定义类似的方法..
要让Artist
在“相册”中扮演角色,请在Album
模型中添加以下方法:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
对于角色,请添加以下方法:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}