我正在构建一个应用程序,用户可以与多种实体建立关系:技能,工具和样式。
这些关系包含额外信息,如评级。
我的用户实体将有三个不同的属性(技能,工具,样式),但我想为每个关系使用相同的中间表。
我计划建立类似的东西:
用户
UserRates
工具
技能
样式
另一个类似的情况是建立一个系统来评估任何事情(博客文章,事件,图像......)。 我无法想象一个系统,你必须为每个新的着名实体重建关系。
我的问题是:
答案 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。