【问题标题】:Doctrine2 FosUserBundle override column nameDoctrine2 FosUserBundle 覆盖列名
【发布时间】:2016-01-22 11:16:08
【问题描述】:

Symfony2 中使用 fosUserBundleDoctrine。 以下是版本:

  • “symfony/symfony”:“2.7.7”
  • “教义/orm”:“^2.4.8”
  • “教义/教义捆绑”:“~1.4”
  • “friendsofsymfony/user-bundle”:“~2.0.0-alpha3”

试图覆盖列名,例如用户名一。

这是我的工作: 命名空间项目\捆绑\实体;

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'. 

EDIT 1:添加命名空间并使用

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

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

【问题讨论】:

  • 您可以为您的用户实体发布您的namespaceuses 声明吗?
  • @DaviKoscianskiVidal:完成

标签: symfony doctrine-orm attributes entity fosuserbundle


【解决方案1】:

我整天都在遇到类似的麻烦,对我来说更改加载的列名是这样的:

/*
 * @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 完成的,如果你可以降级它应该可以工作。

【讨论】:

  • 很抱歉之前没有看到您的评论。所以,你不能降级你的 FOSUserBundle 也不能升级你的 symfony? github 上的 Stof(贡献者之一)通常建议人们在不使用 Symfony 3.X 时使用 1.3.X,因为看起来它们存在兼容性问题或其他问题。顺便说一句,我刚刚看到您使用了 @ORM\Entity(repositoryClass="PROJECT\BUNDLE\Entity\UserRepository") ,尝试使用我使用的语法(这不是我自大,我记得 repositoryClass 有问题,我想知道是不是可绕过。)希望答案不远......
【解决方案2】:

你不是缺少列类型和长度吗?

【讨论】:

  • 它们不是强制性的,我对那些已满的也有同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 2014-04-08
  • 2013-05-19
  • 2012-08-03
相关资源
最近更新 更多