http://laravel.com/docs/eloquent#polymorphic-relations
多态关系允许模型在单个关联上属于多个其他模型。例如,您可能有一个属于员工模型或订单模型的照片模型。
我真的不明白这个用例。这是否意味着工作人员可以拥有一张照片,或者可以将照片放在订单中?为什么不只是放在photo_id
桌子staff
和桌子photo_id
上order
?
有人可以提供一个可以使用多态关系的替代的、易于理解的示例吗?
http://laravel.com/docs/eloquent#polymorphic-relations
多态关系允许模型在单个关联上属于多个其他模型。例如,您可能有一个属于员工模型或订单模型的照片模型。
我真的不明白这个用例。这是否意味着工作人员可以拥有一张照片,或者可以将照片放在订单中?为什么不只是放在photo_id
桌子staff
和桌子photo_id
上order
?
有人可以提供一个可以使用多态关系的替代的、易于理解的示例吗?
您可以添加photo_id
到 Staff and Order,但使用 morphMany 关系类型,您不必“弄乱”所有需要照片的模型。创建需要照片的第三个模型时,只需添加方法即可完成 - 无需创建额外的列。
另请注意,您可以指定名称。该手册使用“可成像”,但可以随意为不同类型的照片(或其他型号)使用多个名称
据我了解,您对 Laravel 文档中提供的示例的看法是有缺陷的。
如果你只是photo_id
在表格staff
和order
表格中添加一个,那么每个员工只能有一张照片,而订单只能有一张照片。一张照片只能属于一个员工或一个订单,但一个员工或一个订单可以有多张照片。