Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2和Symfony2-为特定实体使用类型的最佳实践_Php_Database_Symfony_Doctrine Orm_Entity - Fatal编程技术网

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实体并能够发表评论。在这种情况下,最佳做法是什么?例如,有没有一种方法可以处理注释和纸张实体之间的关系,或者我应该手动执行所有操作:检查类型并生

我有以下数据库结构:

  • 评论
  • 博士类型
  • 文件
  • 录像带
  • 讨论
用户可以对三种文档类型中的一种进行评论:纸张、视频和讨论

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

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的注释