Vous devriez utiliser polymorphic
relations pour cela. Il permet à plusieurs modèles d'utiliser une seule table.
Consultez la documentation ici
Dans votre cas particulier, chacune de vos tables ferait référence à un noteable_id
colonne et un noteable_type
.
Le noteable_id
contiendra l'identifiant du (A/B/C)
modèle.
Le noteable_type
contiendra le nom de chaîne du modèle (A/B/C)
.
Le (A/B/C)
les modèles recevront désormais un nouvel attribut :
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Et la note
le modèle initiera ses propriétés polymorphes par rapport au nom d'attribut utilisé pour identifier vos polymorphic ids and types
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Maintenant, vous pouvez simplement appeler ->noteable
sur le (A/B/C)
modèles, et ils partagent tous 1 table sans avoir besoin d'un autre tableau croisé dynamique pour chaque table.