gpt4 book ai didi

Symfony2 FOSUserBundle 用户实体字段覆盖

转载 作者:行者123 更新时间:2023-12-03 22:09:02 29 4
gpt4 key购买 nike

我在覆盖实体时遇到问题。
我需要该字段 emailCanonical不是独一无二的。

这是我所做的:
在我的 UserBundle\Resources\config\doctrine\User.orm.xml我添加了以下 attribute-overrides配置,根据 Doctrine2 文档

<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 映射中删除覆盖设置,则一切正常。

最佳答案

您可以像这样使用 PHP 注释覆盖(从 2.3 版及更高版本开始支持,请注意,在文档中它提到您不能覆盖类型,但是当时我能够使用最新版本的学说做到这一点)编写它是2.4.4):

<?php 
namespace Namespace\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use FOS\UserBundle\Model\User as BaseUser;

/**
* User
* @ORM\Entity
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="id",
* column=@ORM\Column(
* name = "guest_id",
* type = "integer",
* length = 140
* )
* )
* })
*/
class myUser extends BaseUser
{
/**
* @ORM\Id()
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}

这在文档中指定: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#overrides

关于Symfony2 FOSUserBundle 用户实体字段覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com