我需要帮助建立一个音乐库数据库。
我有三张桌子专辑,艺术家,角色
我希望每一张专辑都有一个艺术家的角色。比如:
艺术家1为专辑1作曲,但也在专辑2中担任编曲,或在专辑3中担任作曲家和编曲者。
我试过这个

数据库应该是什么样子?什么类型的关系?
发布于 2016-09-01 11:40:13
在当前架构中,您将无法根据相册标记艺术家的角色。
因为您的表中没有关系来定义artist_role表中的条目是特定相册的条目。所以,我建议创建一个包含role_id,artist_id和album_id.的中间表
要使用这个具有laravel的manyToMany关系的中间表,可以在模型中定义方法,将一个属性指定为枢轴属性。
例如,在艺术家模型中
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');
}https://stackoverflow.com/questions/39269379
复制相似问题