1

在我基于 Symfony 2 + Doctrine 2 的项目中,我使用以下方法实现模型(基于 FOSUserBundle 源代码):

  1. 属于模型的所有类都在我的包的“模型”文件夹中
  2. 在“实体”文件夹中,我有从模型扩展类的类
  3. 在“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。

我是对的吗?我的问题是否有已知的解决方案?

4

0 回答 0