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.