[英]Laravel Eloquent Relation between 3 table
在当前架构中,您将无法基于专辑标记艺术家的角色。
由于表中没有关系来定义artist_role
表中的条目用于特定专辑。 因此,我建议创建一个包含role_id
, artist_id
和album_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.