Symfony 2与Doctrine 2单表继承

时间:2012-08-17 17:07:05

标签: symfony doctrine-orm yaml single-table-inheritance

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

  1. 属于模型的所有类都在我的包的“Model”文件夹中
  2. 在“Entity”文件夹中,我有从类
  3. 扩展类的类
  4. 在“Resources / config / doctrine /”中我有YAML格式的映射文件
  5. 重要:我希望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。

    我是对的,我的问题有解决方案吗?

0 个答案:

没有答案