Php Doctrine2和Symfony2-为特定实体使用类型的最佳实践
我有以下数据库结构:Php Doctrine2和Symfony2-为特定实体使用类型的最佳实践,php,database,symfony,doctrine-orm,entity,Php,Database,Symfony,Doctrine Orm,Entity,我有以下数据库结构: 评论 博士类型 文件 录像带 讨论 用户可以对三种文档类型中的一种进行评论:纸张、视频和讨论 为此,我在doctype中创建了3种类型 id name 1 paper 2 video 3 discussion 在Comments表中,我有doc\u type\u id 现在,我想使用Comment实体并能够发表评论。在这种情况下,最佳做法是什么?例如,有没有一种方法可以处理注释和纸张实体之间的关系,或者我应该手动执行所有操作:检查类型并生
- 评论
- 博士类型
- 文件
- 录像带
- 讨论
id name
1 paper
2 video
3 discussion
在Comments表中,我有doc\u type\u id
现在,我想使用Comment实体并能够发表评论。在这种情况下,最佳做法是什么?例如,有没有一种方法可以处理注释和纸张实体之间的关系,或者我应该手动执行所有操作:检查类型并生成一个切换案例
谢谢。如果我没弄错的话,
DocType
是一个映射的超类,论文、视频、讨论都可以扩展它。在这种情况下,您可以将OneToMany
关系从DocType
添加到Comment
这应该在引用doctype
表的comments
表中创建一个字段doctype\u id
。这是假设您使用的是类表继承
然后你可以做:
$paper = $this->getDoctrine()->getRepository('Papers\Class\Here')->find(5238953);
$paper->getComments();
我不明白这个问题。我的意思是,你想要达到什么?例如,我需要插入一个新的评论,然后在其他页面上显示所有纸质评论。为此,我需要在实体之间创建一个关系,或者通过检查类型等手动执行此操作。非常感谢。没错,我使用DocType类作为mappedSuperclass,并且在Comments类中有doc_type_id。有可能获得更多关于论文和评论之间联系的细节吗?例如,什么样的细节?我正在尝试创建SuperClass,但找不到示例。问题是:$paper->getComments()如何知道从表注释中获取哪些注释。我刚刚检查了一些文档,使用单表继承并不更好,是否使用单表继承由您决定。条令知道如何自动执行
$paper->getComments()
,因为它知道$paper
id。当您运行getComments()
时,它将运行一些类似于以下内容的SQL:SELECT。。。。。来自doctype_id=5238953的注释
。