在我基于 Symfony 2 + Doctrine 2 的项目中,我使用以下方法实现模型(基于 FOSUserBundle 源代码):
- 属于模型的所有类都在我的包的“模型”文件夹中
- 在“实体”文件夹中,我有从模型扩展类的类
- 在“Resources/config/doctrine/”中,我有带有 YAML 格式映射的文件
重要提示:我希望 STI 从模型而不是实体扩展相应类的持久性(实体)类。
问题:
#Resources/config/doctrine/ContentElement.orm.yml
My\CoreBundle\Entity\ContentElement:
type: entity
table: content_element
inheritanceType: SINGLE_TABLE
discriminatorColumn:
name: discr
type: string
length: 255
discriminatorMap:
contentElement: ContentElementList
htmlContentElement: HtmlContentElement
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
anchor_id:
type: string
anchor_text:
type: string
#Resources/config/doctrine/HtmlContentElement.orm.yml
My\CoreBundle\Entity\HtmlContentElement:
type: entity
fields:
html:
type: text
当我尝试更新数据库时,我从 YAML 驱动程序中得到了错误,直到我另外指定了“id”(我认为它应该被继承)
在为 id 添加映射后,我有 sql 查询,其中我看到每个实体有 2 个单独的表。
我怀疑这是因为 HtmlContentElement 扩展了 Model\HtmlContentElement 而不是 Entity\ContentElement。
我是对的吗?我的问题是否有已知的解决方案?