sql >> Database >  >> RDS >> Mysql

Laravel welsprekende relatie tussen 3 tafels

In uw huidige schema kunt u de rol van de artiest niet taggen op basis van album.
Omdat er geen relatie is in uw tabellen om te definiëren dat het item in artist_role tafel is voor een specifiek album. Dus wat ik zou willen voorstellen is om een ​​tussenliggende tabel te maken met de role_id ,artist_id en album_id .
Om deze tussentabel te gebruiken met laravel's manyToMany relatie, kunt u de methoden in uw modellen definiëren door één attribuut als pivot-attribuut op te geven.

Voor bijv. in Artiestenmodel :

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

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

Definieer vergelijkbare methoden ook voor andere modellen..

Bijwerken:

Voor het verkrijgen van Artist met zijn rol in Album voeg de volgende methode toe in het Album model:

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

Voeg voor rollen de volgende methode toe:

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



  1. Optimalisatiedrempels - Gegevens groeperen en aggregeren, deel 3

  2. ADO.Net SQLCommand.ExecuteReader() vertraagt ​​of loopt vast

  3. MYSQL EXACT woord selecteren met MATCH-query?

  4. Hoe records te filteren met de geaggregeerde functie COUNT