W obecnym schemacie nie będzie można oznaczyć roli wykonawcy na podstawie albumu.
Ponieważ nie ma relacji w twoich tabelach, aby zdefiniować, że wpis w artist_role
tabela dotyczy konkretnego albumu. Sugerowałbym więc utworzenie tabeli pośredniej zawierającej role_id
,artist_id
i album_id
.
Aby użyć tej tabeli pośredniej z manyToMany
laravela relacji, możesz zdefiniować metody w swoich modelach, określając jeden atrybut jako atrybut przestawny.
Dla m.in. w modelu artysty :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Zdefiniuj podobne metody również dla innych modeli.
Aktualizacja:
Aby zdobyć Artist
ze swoją rolą w Albumie dodaj następującą metodę w Album
model:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
Dla ról dodaj następującą metodę:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}