0

我正在尝试实现一些常见的事情,例如阻止创建具有相同用户名的用户。UniqueEntity 约束在其他实体上对我有用,但我猜这个用户很特别,因为它扩展了一个已经存在的实体。

下面的代码清楚地显示了我想要做什么。但它的行为就好像约束根本不存在(当然最终会出现 MySql 错误,因为 DB 不允许重复的用户名条目)。

由于我扩展了 FOS\UserBundle\Model\User,它是否与用户名属性未在此文件中声明而只是继承这一事实有关?如果是这样,我该如何解决?

// src/BizTV/UserBundle/Entity/User.php

namespace BizTV\UserBundle\Entity;

use BizTV\UserBundle\Validator\Constraints as BizTVAssert;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

//use FOS\UserBundle\Entity\User as BaseUser; //deprecated
use FOS\UserBundle\Model\User as BaseUser;

use Doctrine\ORM\Mapping as ORM;

use BizTV\BackendBundle\Entity\company as company;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 * @UniqueEntity(fields = "username", message = "En användare med det namnet finns redan, försök igen.")
 */
class User extends BaseUser implements AdvancedUserInterface
4

1 回答 1

0

您还必须在属性用户名处设置unique=true标志。

像这样的东西:

* @ORM\Column(name="username", unique=true)
于 2013-09-26T07:08:58.587 回答