繁体   English   中英

Laravel 3表之间的雄辩关系

[英]Laravel Eloquent Relation between 3 table

我需要一些帮助来制作音乐库数据库。
我有3张唱片艺术家角色
我希望一位艺术家为每张专辑都扮演一个角色。 喜欢 :
艺术家1担任专辑1的作曲家,但还担任专辑2的编曲或专辑3的作曲家和编曲

我已经试过了 数据库设计

数据库应该如何显示? 什么是类型关系?

在当前架构中,您将无法基于专辑标记艺术家的角色。
由于表中没有关系来定义artist_role表中的条目用于特定专辑。 因此,我建议创建一个包含role_idartist_idalbum_id的中间表。
若要将此中间表与laravel的manyToMany关系一起使用,可以在模型中定义将一个属性指定为数据透视表属性的方法。

对于,例如在Artist Model中

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');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM