Du bör använda polymorphic
relationer för detta. Det tillåter flera modeller att använda en enda tabell.
Ta en titt på dokumentationen här
I ditt specifika fall skulle var och en av dina tabeller referera till ett noteable_id
kolumn och en noteable_type
.
noteable_id
kommer att innehålla ID:t för (A/B/C)
modell.
noteable_type
kommer att innehålla strängnamnet för modellen (A/B/C)
.
(A/B/C)
modeller kommer nu att få ett nytt attribut:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Och note
modellen kommer att initiera dess polymorfa egenskaper mot attributnamnet som används för att identifiera dina polymorphic ids and types
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Nu kan du helt enkelt ringa ->noteable
på (A/B/C)
modeller, och de delar alla 1 bord utan behov av ytterligare en pivottabell för varje tabell.