Je zou polymorphic
moeten gebruiken hiervoor relaties. Hierdoor kunnen meerdere modellen gebruik maken van een enkele tafel.
In jouw specifieke geval zou elk van je tabellen verwijzen naar een noteable_id
kolom en een noteable_type
.
De noteable_id
bevat de id van de (A/B/C)
model.
Het noteable_type
bevat de tekenreeksnaam van het model (A/B/C)
.
De (A/B/C)
modellen krijgen nu een nieuw attribuut:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
En de note
model start zijn polymorfe eigenschappen tegen de attribuutnaam die wordt gebruikt om uw polymorphic ids and types
te identificeren :
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Nu kun je gewoon ->noteable
. bellen op de (A/B/C)
modellen, en ze delen allemaal 1 tabel zonder dat er voor elke tafel een andere draaitabel nodig is.