2016-10-15 1 views
2

と仮定我々は次のようしているモデル:WarriorAxeSwordリバース多型に関して5つの

次の動作を可能にする方法はありますか?

$warrior->weapon = $sword; 
// ... 

または言い換えれば

$warrior->weapon = $axe; 
// ... 

は、それは彼らが雄弁と同様のタイプを持っていたかのように別々のモデルを処理することが可能でしょうか?

P.Sは明らかに、上記だけの要旨を伝える目的を果たす問題の単純化した例です。

+0

こんにちは、これでどこにいらっしゃいましたか?私も同じような状況があります – James

答えて

0

はい、weaponpolymorphic relationとすることができます。 morphs型に移行ファイルで行うことができ、あなたのテーブルに列weapon_typeweapon_idを追加します。

Schema::table('warriors', function ($table) { 
    $table->morphs('weapon'); 
}); 

今あなたがWarriorモデルにあなたの関係を追加する準備ができている:

​​

だとそれ!今すぐあなたは武器を追加することができ、Eloquentは残りの世話をします。この関係は熱心な負荷をサポートします。あなたの武器はすべてインターフェイスを実装して、どのメソッドが共通しているかを知っておくべきですが、残念ながらEloquentがPHP型システムを通してそのインターフェイスを強制する方法はありません。

関連する問題