Doctrine2和Symfony2 - 为特定实体使用类型的最佳实践

时间:2014-04-16 07:20:01

标签: php database symfony doctrine-orm entity

我有这个数据库结构:

  • 评论
  • DOCTYPES
  • 论文
  • 讨论

用户可以对这3种文档类型发表评论:纸张,视频和讨论。

为此,我在DocTypes中创建了3种类型

id    name
1     paper
2     video
3     discussion

在评论表中,我有doc_type_id。

现在,我想使用Comment实体并能够发表评论。在这种情况下,最佳做法是什么?例如,有没有办法在Comment和Paper实体之间建立关系,或者我应该手动完成所有事情:检查类型并制作一个开关案例?

谢谢。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,DocType是一个映射的超类,而Paper,Video,Discussion则扩展它。在这种情况下,您只需在OneToManyDocType之间添加Comment关系。

这应该在引用doctype_id表的comments表中创建一个字段doctype。这假设你正在使用类表继承。

然后你可以这样做:

 $paper = $this->getDoctrine()->getRepository('Papers\Class\Here')->find(5238953);
 $paper->getComments();