我正在尝试实施一些常见的操作,例如阻止使用相同的用户名创建用户。 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
答案 0 :(得分:0)
您还必须在属性用户名中设置 unique = true 标志。
这样的事情:
* @ORM\Column(name="username", unique=true)