Symfony:与多种entiy类型的关系

时间:2016-03-14 12:14:26

标签: symfony doctrine-orm entity-relationship

我正在构建一个应用程序,用户可以与多种实体建立关系:技能,工具和样式。

这些关系包含额外信息,如评级。

我的用户实体将有三个不同的属性(技能,工具,样式),但我想为每个关系使用相同的中间表。

我计划建立类似的东西:

用户

  • 名称
  • ...
  • 工具
  • 技能
  • 风格

UserRates

  • 用户ID
  • 工具/样式/技能ID
  • 关系类型("工具","风格","技能")
  • 评分

工具

  • 名称
  • ...

技能

  • 名称
  • ...

样式

  • 名称
  • ...

另一个类似的情况是建立一个系统来评估任何事情(博客文章,事件,图像......)。 我无法想象一个系统,你必须为每个新的着名实体重建关系。

我的问题是:

  • 这种关系在SF2中是否可行?
  • 你知道什么好的例子/文章吗?
  • 你会怎么做?我想我需要一个自定义存储库和自定义setter / getters?

1 个答案:

答案 0 :(得分:0)

工具

实体由ORM处理。我猜你正在使用Doctrine,因为它是Symfony2 +的标准配置。

如何建立关系

与Doctrine映射完成关系,您可以在此处找到on their documentation website

注意:教条文档中的注释没有@ORM/前缀,属于Symfony2的实体需要(查看“使用”语句以了解原因)。所以你必须自己添加它们。

PS:除非您非常有充分理由通过一个中间表将所有这些实体关联起来,否则请不要这样做。

我还应该注意,在处理ORM时,你不应该考虑表,而应该考虑对象。 Doctrine将自动生成ManyToMany关系的中间表。 当关系必须携带额外信息时,您只需要自己创建一个(因此具有ManyToOne IntermidiaryEntity OneToMany关系)。

正如某人已经建议的那样,我建议您阅读relevant chapter in Symfony2's amazing book