3

http://laravel.com/docs/eloquent#polymorphic-relations

ポリモーフィック リレーションにより、1 つの関連付けで、モデルを複数の他のモデルに属することができます。たとえば、staff モデルまたは order モデルのいずれかに属する写真モデルがあるとします。

このユースケースがよくわかりません。これは、スタッフのメンバーが写真を所有できる、または写真を注文できるということですか? テーブルとテーブルに入れphoto_idてみませんか?staffphoto_idorder

ポリモーフィックな関係を使用できる代替のわかりやすい例を誰か提供してもらえませんか?

4

2 に答える 2

2

Staff と Order にを追加できますがphoto_id、morphMany リレーション タイプを使用すると、Photo を必要とするすべてのモデルを「乱雑にする」必要はありません。写真を必要とする 3 番目のモデルを作成する場合は、メソッドを追加するだけで完了です。余分な列を作成する必要はありません。

また、名前を指定することもできます。マニュアルでは「imageable」を使用していますが、異なるタイプの写真 (または他のモデル) に複数の名前を自由に使用してください。

于 2013-09-05T10:39:49.433 に答える
1

私の理解では、Laravel Docs で提供されている例に対するあなたの見解には欠陥があります。

とテーブルphoto_idの両方にを単純に追加した場合、各スタッフ メンバーは 1 枚の写真しか持てませんが、オーダーは 1 枚の写真しか持てません。1 枚の写真はスタッフ メンバーまたは注文にのみ属することができますが、1 人のスタッフ メンバーまたは 1 つの注文は複数の写真を持つことができます。stafforder

于 2013-10-22T21:21:53.037 に答える