sql >> Database teknologi >  >> RDS >> Mysql

Laravel veltalende forhold mellem 3 bord

I dit nuværende skema vil du ikke være i stand til at tagge kunstnerens rolle på basis af album.
Der er ingen relation i dine tabeller til at definere, at posten i artist_role tabellen er til et bestemt album. Så det, jeg vil foreslå, er at oprette en mellemtabel, der indeholder role_id ,artist_id og album_id .
For at bruge denne mellemtabel med laravels manyToMany forhold, kan du definere metoderne i dine modeller ved at angive én egenskab som pivotattribut.

For f.eks. i Kunstnermodel :

public function Roles(){
    return $this->belongsToMany('App\Roles')->withPivot('album_id');
}

public function Albums(){
    return $this->belongsToMany('App\Albums')->withPivot('role_id');
}

Definer også lignende metoder for andre modeller..

Opdatering:

For at få Artist med sin rolle i Album tilføje følgende metode i Album model:

public function Artists(){
    return $this->belongsToMany('App\Artist')->withPivot('role_id');
}

For roller tilføj følgende metode:

public function Roles(){
    return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}



  1. Generel fejl:1005 Kan ikke oprette tabel ved hjælp af Laravel Schema Build og fremmednøgler

  2. Udskrivning af en alfabetpyramide i PL/SQL

  3. Giver mysql CLI-værktøjet en måde at vise binære data på en konsolvenlig måde?

  4. PHP MySQL lille forespørgsel timeout, skal indstille grænsen til 10