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つのテーブルを共有します。