symfony2对用户名不起作用的UniqueEntity约束

时间:2013-09-25 21:26:14

标签: symfony constraints unique

我正在尝试实施一些常见的操作,例如阻止使用相同的用户名创建用户。 UniqueEntity约束对我在其他实体上有效,但我想用户是特殊的,因为它扩展了已经存在的实体。

下面的代码清楚地显示了我想要做的事情。但它的行为好像根本没有约束(当然最终会出现MySql错误,因为DB不允许重复输入用户名)。

这可能与username文件未在此文件中声明但仅继承因为我正在扩展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

1 个答案:

答案 0 :(得分:0)

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

这样的事情:

* @ORM\Column(name="username", unique=true)