エンティティのオーバーライドに問題があります。フィールドemailCanonical
が一意ではない必要があります。
これが私がやったことです: Doctrine2のドキュメントによると、私は次の構成UserBundle\Resources\config\doctrine\User.orm.xml
を追加しましたattribute-overrides
<attribute-overrides>
<attribute-override name="emailCanonical">
<field column="email_canonical" unique="false" name="emailCanonical" />
</attribute-override>
</attribute-overrides>
次に、次のコンソールコマンドを実行しました
$ php app/console doctrine:migrations:diff
$ php app/console doctrine:migrations:migrate
すべてがうまくいきました。emailCanonical
非一意にされました。しかし今、プロジェクトの他のバンドルでエンティティを生成する必要がある場合、奇妙なエラーが発生します:
$ php app/console doctrine:generate:entities SkyModelsBundle:Category
Generating entity "Sky\Bundle\ModelsBundle\Entity\Category"
[Doctrine\ORM\Mapping\MappingException]
Invalid field override named 'emailCanonical' for class 'Sky\Bundle\UserBundle\Entity\User'.
doctrine:generate:entities [--path="..."] [--no-backup] name
ただし、xml マッピングからオーバーライド設定を削除すると、すべて正常に動作します。