我正在尝试实现一些常见的事情,例如阻止创建具有相同用户名的用户。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