2016-12-02 8 views
1

エンティティAとエンティティBがエンティティAを拡張しています。Symfony 2エンティティをオーバーライドして追加プロパティを追加

エンティティA - ベンダーバンドル。 エンティティB-in/srcバンドル。

私は多くの時間を捜し、私のためには唯一の解決策があります。 DoctrineイベントloadClassMetadataClassMetadataListenerを使用しています。

エンティティBを拡張することはできません。エンティティAからすべてのプロパティをエンティティBに追加する必要があります。

理由を理解できません。

答えて

3

Doctrine2を使用しているときに、通常のようにクラスを拡張することはできません。

エンティティクラスに継承を実装する方法については、chapter 6. Inheritance Mappingのドキュメントを参照してください。

あなたはおそらくin chapter 6.1. Mapped Superclassesに興味があります。

マップされたスーパークラスは、そのサブクラスに対して永続的なエンティティの状態とマッピング情報を提供する抽象クラスまたは具象クラスですが、それ自体はエンティティではありません。通常、そのようなマップされたスーパークラスの目的は、複数のエンティティークラスに共通の状態およびマッピング情報を定義することです。

これを行うには、エンティティの基本クラスに@MappedSuperclass注釈を使用する必要があります。

+0

とMappedSuperclassがあります。 –

+0

@ GrzegorzKrauze私の答えで言及しているドキュメントで説明されているとおりではありません。私はそこから私の答えに引用符を追加します... – Wilt

+0

はい、私のポストとmmoreramの投稿の後にMappedSuperclassについての部分を追加しました。それ以前は明らかではなかった。 –

1

@の上に@MappedSuperclassアノテーションを追加してください。これで十分でしょう:)

関連する問題