I ditt nuvarande schema kommer du inte att kunna tagga artistens roll på basis av album.
Eftersom det inte finns någon relation i dina tabeller för att definiera posten i artist_role
tabellen är för ett specifikt album. Så vad jag skulle föreslå är att skapa en mellantabell som innehåller role_id
,artist_id
och album_id
.
Att använda den här mellantabellen med laravels manyToMany
relation, kan du definiera metoderna i dina modeller och ange ett attribut som pivotattribut.
För t.ex. i Artistmodell :
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Definiera liknande metoder för andra modeller också...
Uppdatering:
För att få Artist
med sin roll i Album lägg till följande metod i Album
modell:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
För roller lägg till följande metod:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}