Sie sollten polymorphic
verwenden Beziehungen dazu. Es ermöglicht mehreren Modellen, eine einzelne Tabelle zu verwenden.
Sehen Sie sich hier die Dokumentation an
In Ihrem speziellen Fall würde jede Ihrer Tabellen auf eine noteable_id
verweisen -Spalte und einen noteable_type
.
Die noteable_id
enthält die ID des (A/B/C)
Modell.
Der noteable_type
enthält den Zeichenfolgennamen des Modells (A/B/C)
.
Der (A/B/C)
Modelle erhalten nun ein neues Attribut:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Und die note
Das Modell initiiert seine polymorphen Eigenschaften anhand des Attributnamens, der zum Identifizieren Ihrer polymorphic ids and types
verwendet wird :
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Jetzt können Sie einfach ->noteable
aufrufen auf (A/B/C)
Modelle, und alle teilen sich eine Tabelle, ohne dass für jede Tabelle eine weitere Pivot-Tabelle benötigt wird.