Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Laravel Wymowna relacja między 3 stolikami

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');
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pole kombi WPF wypełnia dane z bazy danych mysql

  2. Utwórz zapytanie, aby uzyskać liczbę nieukończonych połączeń

  3. MySQL SHA() nie działa

  4. Konwertuj wszystkie kolumny w wierszach z daty na znacznik czasu MySQL

  5. Konstruktor zapytań Laravel GDZIE NIE W