Doctrine2 FosUserBundle覆盖列名

时间:2016-01-22 11:16:09

标签: symfony doctrine-orm attributes entity fosuserbundle

Symfony2 中使用 fosUserBundle Doctrine 。 以下是版本:

  • " symfony / symfony":" 2.7.7"
  • " doctrine / orm":" ^ 2.4.8"
  • " doctrine / doctrine-bundle":" ~1.4"
  • " friendsofsymfony / user-bundle":" ~2.0.0-alpha3"

尝试覆盖列名,例如用户名1。

这是我做的:     命名空间PROJECT \ BUNDLE \ Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* @ORM\Table(name="PROJECT_BUNDLE_USER")
 * @ORM\Entity(repositoryClass="PROJECT\BUNDLE\Entity\UserRepository")
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="username",
 *          column=@ORM\Column(
 *              name    = "BUNDLE_USERNAME"
 *          )
 *      ),
  [....]
 * })
 */
class User extends BaseUser
{
  [....]

当我想用php app/console doctrine:generate:entities PROJECT

生成实体时
   [Doctrine\ORM\Mapping\MappingException]                                             
      Invalid field override named 'username' for class 'PROJECT\BUNDLE\Entity\User'. 

编辑1 :添加命名空间并使用

编辑2 :类型和长度属性相同的错误已完成:

    column=@ORM\Column(
 *              name    = "USER_USERNAME",
 *              type    = "string",
 *              length  = 255
 *          )

2 个答案:

答案 0 :(得分:2)

我花了一整天的时间来处理类似的麻烦,对我来说更改列名的方法是:

/*
 * @ORM\Entity
 * @ORM\Table(name="Utilisateurs")
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="password",
 *         column=@ORM\Column(
 *             name="MDP",
 *             type="string",
 *             length=50,
 *             nullable=false
 *         )
 *     ),})

其中MDP是我的database_table和密码的名称,FOSUserbundle想要的名称。一定要指定类型,出于某种原因没有它就会出错。 编辑:这是用FOSUserBundle~1.3完成的,如果你可以降级它应该工作。

答案 1 :(得分:0)

您是否错过了列类型和长度?