我需要一些帮助来制作音乐库数据库。
我有 3 个表专辑、艺术家、角色
我希望艺术家在每张专辑中扮演一个角色。
喜欢:
艺术家 1 担任专辑 1 的 Composer ,同时担任专辑 2 的编曲人或专辑 3 的作曲人和编曲人
数据库应该是什么样子的?什么类型的关系?
最佳答案
在您当前的架构中,您将无法根据专辑标记艺术家的角色。
由于您的表中没有关系来定义 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');
}
关于php - 3 表之间的 Laravel Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269379/