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