我有自己的User
类,它继承了FOS\UserBundle\Entity\User
. 此外,我编写了自己的注册程序。现在我遇到的问题是表单不能确保用户名是唯一的。我总是得到:
SQLSTATE [23000]:完整性约束违规:1062 键 'UNIQ_2DA1797792FC23A8' 的重复条目 'myusername'
我尝试@UniqueEntity("email")
按照文档1中的说明添加注释,但没有任何效果。
有人知道可能出了什么问题吗?
我有自己的User
类,它继承了FOS\UserBundle\Entity\User
. 此外,我编写了自己的注册程序。现在我遇到的问题是表单不能确保用户名是唯一的。我总是得到:
SQLSTATE [23000]:完整性约束违规:1062 键 'UNIQ_2DA1797792FC23A8' 的重复条目 'myusername'
我尝试@UniqueEntity("email")
按照文档1中的说明添加注释,但没有任何效果。
有人知道可能出了什么问题吗?
如果您使用的是 fos_user 包,您可以简单地使用 UniqueEntity 约束:http ://symfony.com/doc/2.0/reference/constraints/UniqueEntity.html 。
要实现它,只需确保您的 User 类包含正确的 use 语句,然后是注释,就像这样(假设您正在使用注释):
<?php
// ...
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @UniqueEntity("email")
* @UniqueEntity("username")
*/
class User extends BaseUser
{ /* ... */ }
FOS 捆绑包中已经存在该约束。您可能需要将validation_groups
表单上的选项设置为array('Registration')
.
validation.yml
您可以使用您的用户实体验证尝试此操作:
constraints:
- FOS\UserBundle\Validator\Unique:
property: usernameCanonical
message: 'This username already exists. Please choose another one.'