Dovresti usare polymorphic relazioni per questo. Consente a più modelli di utilizzare un unico tavolo.
Dai un'occhiata alla documentazione qui
Nel tuo caso particolare, ciascuna delle tue tabelle farebbe riferimento a un noteable_id colonna e un noteable_type .
Il noteable_id conterrà l'id del (A/B/C) modello.
Il noteable_type conterrà il nome della stringa del modello (A/B/C) .
Il (A/B/C) i modelli ora riceveranno un nuovo attributo:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
E la note model avvierà le sue proprietà polimorfiche rispetto al nome dell'attributo utilizzato per identificare i tuoi polymorphic ids and types :
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Ora puoi semplicemente chiamare ->noteable sul (A/B/C) modelli e condividono tutti 1 tabella senza la necessità di un'altra tabella pivot per ogni tabella.