首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔雄辩的三表关系

拉勒维尔雄辩的三表关系
EN

Stack Overflow用户
提问于 2016-09-01 10:41:50
回答 1查看 307关注 0票数 1

我需要帮助建立一个音乐库数据库。

我有三张桌子专辑,艺术家,角色

我希望每一张专辑都有一个艺术家的角色。比如:

艺术家1为专辑1作曲,但也在专辑2中担任编曲,或在专辑3中担任作曲家和编曲者。

我试过这个

数据库应该是什么样子?什么类型的关系?

EN

回答 1

Stack Overflow用户

发布于 2016-09-01 11:40:13

在当前架构中,您将无法根据相册标记艺术家的角色。

因为您的表中没有关系来定义artist_role表中的条目是特定相册的条目。所以,我建议创建一个包含role_idartist_idalbum_id.的中间表

要使用这个具有laravel的manyToMany关系的中间表,可以在模型中定义方法,将一个属性指定为枢轴属性。

例如,在艺术家模型

代码语言:javascript
复制
public function Roles(){
    return $this->belongsToMany('App\Roles')->withPivot('album_id');
}

public function Albums(){
    return $this->belongsToMany('App\Albums')->withPivot('role_id');
}

为其他模型定义类似的方法。

更新:

要获取Artist及其在相册中的角色,请在Album模型中添加以下方法:

代码语言:javascript
复制
public function Artists(){
    return $this->belongsToMany('App\Artist')->withPivot('role_id');
}

对于角色,添加以下方法:

代码语言:javascript
复制
public function Roles(){
    return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39269379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档