polymorphicを使用する必要があります このための関係。複数のモデルが単一のテーブルを利用できるようにします。
特定のケースでは、各テーブルが noteable_idを参照します。 列とnoteable_type 。
noteable_id (A / B / C)のIDが含まれます モデル。
noteable_type モデルの文字列名が含まれます(A / B / C) 。
(A / B / C)コード> モデルは新しい属性を取得します:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
そしてnote モデルは、ポリモーフィックIDとタイプを識別するために使用される属性名に対してポリモーフィックプロパティを開始します :
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
これで、-> noteを呼び出すだけで済みます。 (A / B / C)コード> モデルであり、テーブルごとに別のピボットテーブルを必要とせずに、すべて1つのテーブルを共有します。