आपको polymorphic
का उपयोग करना चाहिए इसके लिए रिश्ते। यह कई मॉडलों को एक ही टेबल का उपयोग करने की अनुमति देता है।
आपके विशेष मामले में, आपकी प्रत्येक तालिका एक noteable_id
. का संदर्भ देगी कॉलम और एक noteable_type
.
noteable_id
(A/B/C)
. की आईडी होगी मॉडल।
noteable_type
मॉडल का स्ट्रिंग नाम होगा (A/B/C)
।
(A/B/C)
मॉडल को अब एक नई विशेषता मिलेगी:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
और note
मॉडल आपके polymorphic ids and types
की पहचान करने के लिए उपयोग किए जाने वाले विशेषता नाम के विरुद्ध इसके बहुरूपी गुणों को आरंभ करेगा :
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
अब आप बस ->noteable
. पर कॉल कर सकते हैं (A/B/C)
. पर मॉडल, और वे सभी प्रत्येक तालिका के लिए किसी अन्य पिवट तालिका की आवश्यकता के बिना 1 तालिका साझा करते हैं।