2016-03-25 16 views
1

私は特性から、そのプロパティ(と基本的なメソッド)を取得するエンティティTestを持っている:symfonyの/ドクトリン:トレイトと注釈

class Test { 
    use Trait_title; 
} 

trait Trait_title{ 
    /** 
    * @ORM\Column(type="string", length=255, nullable=false) 
    */ 
    private $title; 
} 

正常に動作します。私はuse文の前でTest Classに注釈を入れしようとしたとき、私は、スキーマを更新しようとすると、しかし、部分的または完全な彼らはただsymfonyによって無視されます。

class Test { 
    /** 
    * @ORM\Column(type="string", length=255, nullable=false) //will be ignored... 
    */ 
    use Trait_title; 
} 

trait Trait_title { 
    private $title; 
} 

これの目的は、移動することです特性へのdoctrine注釈のデフォルト値はですが、エンティティごとにnullableなどのカスタム注釈も設定することができます。

+0

のように、use文に穴のコンテキストをインポートしていますが、このアプローチから必要なものを得ることはできません。 –

答えて

2

あなたが探しているのはマッピングオーバーライドです。あなたはDoctrineの公式のドキュメントをご覧ください

はこれを実装するには:形質マッピング情報を上書きして、あなたのユースケースのために、正確にも例があり http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/override-field-association-mappings-in-subclasses.html

時には、オーバーライドするマッピングは、特性がマッピングメタデータを持つ形質を使用するエンティティからも得られます。このチュートリアルでは、マッピングメタデータ、特に属性と関連メタデータをオーバーライドする方法について説明します。

第2の方法は、マッピング情報を再定義することによってtraitプロパティをオーバーライドすることです。 この解決方法の詳細については、 https://stackoverflow.com/a/11939306/4829152

関連する問題