Doctrine2 多对多多态关系

5
我尝试在Symfony2中使用Doctrine2创建多对多的多态关系。
我希望有一个实体可以动态地与多个实体相关联。
我希望获得以下模式:
1. 帖子
· id:整数,
· 名称:字符串
2. 视频
· id:整数,
· 名称:字符串
3. 标签
· id:整数,
· 名称:字符串
4. 标记物
· tag_id:整数,
· taggable_id:整数,
· taggable_type:字符串
在标记物表中:
· tag_id是相关联标签的id;
· taggable_id是相关联帖子的id;
· taggable_type是相关实体的类型,例如“Posts”。
我还希望通过类似的方式将其应用于“视频”,其中:
· tag_id表示相关联标记的id;
· taggable_id是相关联视频的id;
· taggable_type是相关实体的名称,例如“Videos”。
并且所有这些都不需要复制表。
我已经测试了多种解决方案,但从未达到这个结果。
谢谢你们提前的帮助。

你尝试过只使用3个表吗?我建议你设置“帖子(posts)”、“视频(videos)”和“标签(tags)”表,然后在帖子和标签、视频和标签之间使用多对多关系。 - A.L
1个回答

2
你可以使用面向对象编程(OOP)和继承来解决这个问题。
定义一个抽象类Taggable,并让PostVideo继承该类。然后创建从TagTaggable的一对多关系。
假设你选择了单表继承或类表继承,Doctrine会处理所有事情。
我会选择类表继承。
关于这个主题的更多信息 在这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接