Du skal bruge polymorf
relationer til dette. Det giver flere modeller mulighed for at bruge en enkelt tabel.
I dit særlige tilfælde vil hver af dine tabeller referere til et noteable_id
kolonne og en noteable_type
.
noteable_id
vil indeholde id'et for (A/B/C)
model.
noteable_type
vil indeholde strengnavnet på modellen (A/B/C)
.
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Og noten
modellen vil starte dens polymorfe egenskaber mod det attributnavn, der bruges til at identificere dine polymorfe id'er og typer
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Nu kan du blot kalde ->noteable
på (A/B/C)
modeller, og de deler alle 1 bord uden behov for endnu et pivottabel for hvert bord.