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.