Mysql
 sql >> база данни >  >> RDS >> Mysql

Laravel Eloquent Relation между 3 табл

Във вашата текуща схема няма да можете да маркирате ролята на изпълнителя въз основа на албум.
Тъй като във вашите таблици няма връзка, която да дефинира записа в artist_role таблицата е за конкретен албум. И така, това, което бих предложил, е да създадете междинна таблица, съдържаща role_id ,artist_id и album_id .
За да използвате тази междинна таблица с manyToMany на laravel връзка, можете да дефинирате методите във вашите модели, като посочите един атрибут като осев атрибут.

За напр. в Модел на художник :

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

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

Дефинирайте подобни методи и за други модели..

Актуализация:

За получаване на Artist с ролята си в Албум добавете следния метод в Album модел:

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

За роли добавете следния метод:

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. добави тригер към всяка таблица в моята H2 база данни

  2. Как да конфигурирам нашия MySQL ReplicationDriver за нашия източник на данни JBoss 7?

  3. Как да покажа 0, когато няма данни

  4. ГРЕШКА 1114 (HY000):Таблицата „XXX“ е пълна

  5. Система за гласуване с PHP+MySql?