symfony - 唯一实体约束

标签 symfony unique-constraint symfony-2.3

我想验证用户实体的唯一性。我这样做:

 $builder->add('email', 'email', array(
                    'required' => true,
                    'constraints' => array(
                        new NotBlank(), new Email(), new UniqueEntity(array('fields' => array('email')))
                    )
                )
            )

但我收到以下错误:

Warning: get_class() expects parameter 1 to be object, string given in vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php line 66

我做错了什么?

最佳答案

它失败了,因为 UniqueEntity 需要应用于实体而不是单个字段。称为类约束。您最好的选择是使用validation.yml,如下所述:http://symfony.com/doc/current/reference/constraints/UniqueEntity.html

但是,应该可以使用 setDefaultOptions 来应用它:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'constraints'     => array(
            new UniqueEntity(array('fields' => array('email'))),

关于symfony - 唯一实体约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17877638/

相关文章:

MySQL UNIQUE约束多列条件

java - Spring-JPA-data保存实体UNIQUE INDEX(两列,不是pk)违反不能抛出异常

php - 验证用户是否在 symfony2 中通过身份验证

php - Symfony2 - 在事件之间传递数据

forms - 停止在身份验证时重新生成/使 CSRF 无效

controller - 将参数传递给所有 View

php - symfony 映射错误 : inverse and owning side field field doesnot exist - even though I declared them in both the classes

mysql - 表结构变更时的Doctrine和Mysql数据迁移

php - Symfony2 FOSUserBundle 扩展注册表导致重复电子邮件验证

grails - 对Grails数据源插件使用唯一约束会导致NullPointerException