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

データベースを更新しようとすると、さらに「id」を指定するまで、YAML ドライバーからエラーが発生します (これは、思ったように継承する必要があります)。

id のマッピングを追加した後、エンティティごとに 2 つの個別のテーブルが表示される SQL クエリがあります。

これは、HtmlContentElement が Model\HtmlContentElement を拡張しているが、Entity\ContentElement を拡張していないために発生すると思われます。

私は正しいですか、私の問題に対する既知の解決策はありますか?

4

0 に答える 0