Ve vašem aktuálním schématu nebudete moci označit roli umělce na základě alba.
Ve vašich tabulkách neexistuje žádný vztah, který by definoval, že položka v artist_role
tabulka je pro konkrétní album. Navrhoval bych tedy vytvořit přechodnou tabulku obsahující role_id
,artist_id
a album_id
.
Chcete-li použít tuto přechodnou tabulku s laravelovým manyToMany
vztahu, můžete ve svých modelech definovat metody specifikující jeden atribut jako atribut pivot.
Pro např. v Model umělce :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Definujte podobné metody také pro ostatní modely..
Aktualizace:
Za získání Artist
s jeho rolí v albu přidejte následující metodu do Album
model:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Pro role přidejte následující metodu:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}