Em seu esquema atual, você não poderá marcar a função do artista com base no álbum.
Como não há relação em suas tabelas para definir que a entrada em
artist_role
tabela é para álbum específico. Então, o que eu sugiro é criar uma tabela intermediária contendo o role_id
,artist_id
e album_id
.Para usar esta tabela intermediária com
manyToMany
do laravel relacionamento, você pode definir os métodos em seus modelos especificando um atributo como atributo pivô. Para, por exemplo em modelo de artista :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Defina métodos semelhantes para outros modelos também.
Atualização:
Para obter
Artist
com sua função no Álbum, adicione o seguinte método no Album
modelo:public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Para funções, adicione o seguinte método:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}