अपने वर्तमान स्कीमा में, आप एल्बम के आधार पर कलाकार की भूमिका को टैग नहीं कर पाएंगे।
चूंकि आपकी तालिका में 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');
}