解释Laravel多态关系

时间:2013-09-05 08:53:27

标签: laravel laravel-4 polymorphic-associations

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

  

多态关系允许模型属于多个其他模型   模型,单一关联。例如,您可能有一张照片   属于员工模型或订单模型的模型。

我真的不明白这个用例。这是否意味着一名工作人员可以拥有照片,或者照片可以放在订单中?为什么不将photo_id放在staff表格中,将photo_id放在order表格中?

有人可以提供一个替代的,易于理解的例子,其中可以使用多态关系吗?

2 个答案:

答案 0 :(得分:2)

您可以将photo_id添加到Staff和Order,但是使用morphMany关系类型,您不必“混乱”所有需要Photo的模型。 在创建需要Photo的第三个模型时,只需添加方法即可完成 - 无需创建额外的列。

另请注意,您可以指定名称。本手册使用“可成像”,但可以为不同类型的Photo(或其他型号)使用多个名称

答案 1 :(得分:1)

据我所知,您对Laravel Docs中提供的示例的看法存在缺陷。

如果您只是在photo_idstaff表格中添加order,那么每个工作人员只能有一张照片,而订单只能有一张照片。一张照片只能属于工作人员或订单,但一个工作人员或一个订单可以有多张照片。