Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

3 टेबल के बीच लारवेल वाक्पटु संबंध

अपने वर्तमान स्कीमा में, आप एल्बम के आधार पर कलाकार की भूमिका को टैग नहीं कर पाएंगे।
चूंकि आपकी तालिका में artist_role की प्रविष्टि को परिभाषित करने के लिए कोई संबंध नहीं है तालिका विशिष्ट एल्बम के लिए है। तो, मेरा सुझाव है कि एक इंटरमीडिएट टेबल बनाएं जिसमें role_id . हो ,artist_id और album_id .
लार्वेल के manyToMany के साथ इस मध्यवर्ती तालिका का उपयोग करने के लिए संबंध, आप अपने मॉडल में एक विशेषता को पिवट विशेषता के रूप में निर्दिष्ट करने के तरीकों को परिभाषित कर सकते हैं।

के लिए, उदा. कलाकार मॉडल . में :

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. MySQL में वैकल्पिक तालिका:मित्र या शत्रु?

  2. PHP का उपयोग करके MySQL तालिका में पंक्तियों की गिनती कैसे प्राप्त करें?

  3. इनपुट के रूप में GROUP_CONCAT के साथ WHERE IN चुनें

  4. कैसे समझें कि mysql त्रुटि संदेशों को कनेक्ट नहीं किया जा सकता है?

  5. MySQL में पंक्ति मान को 1 से बढ़ाएँ और घटाएँ