Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Laravel Eloquent Relation antara 3 tabel

Dalam skema Anda saat ini, Anda tidak akan dapat menandai peran artis berdasarkan album.
Karena tidak ada hubungan dalam tabel Anda untuk mendefinisikan bahwa entri di artist_role tabel adalah untuk album tertentu. Jadi, yang saya sarankan adalah membuat tabel perantara yang berisi role_id ,artist_id dan album_id .
Untuk menggunakan tabel perantara ini dengan manyToMany laravel hubungan, Anda dapat menentukan metode dalam model Anda dengan menetapkan satu atribut sebagai atribut pivot.

Untuk, misalnya di Model Artis :

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

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

Tentukan metode serupa untuk Model lain juga..

Pembaruan:

Untuk mendapatkan Artist dengan perannya di Album tambahkan metode berikut di Album model:

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

Untuk peran tambahkan metode berikut:

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. SQL:Pindahkan data kolom ke tabel lain dalam relasi yang sama

  2. Kerangka Tanpa Server dengan Node MySQL

  3. MySQL - mengecualikan semua pengguna yang diblokir dari hasil

  4. Masukkan ID dari satu tabel ke tabel lainnya di MySQL php

  5. Jumlah MySQL dalam tabel yang sama termasuk nilai hitungan nol