【发布时间】:2013-03-21 08:16:20
【问题描述】:
我在覆盖实体时遇到问题。
我需要字段 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 映射中删除覆盖设置,一切正常。
【问题讨论】:
-
我不确定,你的问题是什么。
-
这是我解决它的方法.. 你可以试试这个:stackoverflow.com/a/17059918/2342137
-
我也有同样的问题。我使用注释来覆盖相同的属性,直到我尝试使用教义:生成:实体时才意识到存在问题。你找到解决方案了吗?
标签: symfony doctrine-orm fosuserbundle