Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony-唯一实体约束不';行不通_Php_Forms_Symfony_Constraints_Unique - Fatal编程技术网

Php Symfony-唯一实体约束不';行不通

Php Symfony-唯一实体约束不';行不通,php,forms,symfony,constraints,unique,Php,Forms,Symfony,Constraints,Unique,我目前正在从事一个Symfony v3.3.6项目。 我有一个用户创建表单。 我想确保电子邮件和用户名(fos用户包)是唯一的 我目前拥有这个型号(只有一小部分): 但是,即使我写了一个已经存在的电子邮件地址,我也会遇到这种情况,当刷新时间到来时,我会遇到一个很大的SQL错误: SQLSTATE [23000]: Integrity constraint violation: 1062 Duplicate entry 'emailtest@test.fr' for key 'UNIQ_8D93D

我目前正在从事一个Symfony v3.3.6项目。 我有一个用户创建表单。 我想确保电子邮件和用户名(fos用户包)是唯一的

我目前拥有这个型号(只有一小部分):

但是,即使我写了一个已经存在的电子邮件地址,我也会遇到这种情况,当刷新时间到来时,我会遇到一个很大的SQL错误:

SQLSTATE [23000]: Integrity constraint violation: 1062 Duplicate entry 'emailtest@test.fr' for key 'UNIQ_8D93D649A0D96FBF'
但有趣的是,“NotBlank”约束工作正常,并在视图中显示“值不能为空”

这是我的表格:

class UserType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('lastname',null,array('required' => true))
            ->add('firstname')
            ->add('gender',null,array('required'=>true))
            ->add('organisationMember',null,array(
                'required' => true,
                'choices' => $options['organisation'],
                'group_by' => 'type_organisation',
                'placeholder' => 'Choisissez votre organisation'
            ))
            ->add('job')
            ->add('lang', null, array(
                'required' => true
            ))
            ->add('mobile',null, array(
                'required' => false
            ))
            ->add('phone', null, array(
                'required' => true
            ))
            ->add('enabled')
            ->add('is_external')
            ->add('alert_failure')
            ->add('alert_full')
            ->add('alert_other')
            ->add('plainPassword', TextType::class, array('required' => false))
            ->add('email')
            ->add('profile', null, array(
                'required' => true,
                'placeholder' => 'Choose an organisation !',
            ));
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'ProjectBundle\Entity\User\User',
            'organisation' => 'ProjectBundle\Entity\Organisation\Organisation',
            'profiles' => 'ProjectBundle\Entity\User\Profile',
            'csrf' => true,
        ));

    }
}
如果有人有办法的话


提前谢谢你

您是否尝试过这样做:

/**
 * @ORM\Entity(repositoryClass="ProjectBundle\Repository\User\UserRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
 * @ORM\Entity
 * @UniqueEntity(fields={"email", "username"}, groups={"registration"})
 * @ORM\Table(name="user")
 */

但请确保您有唯一的电子邮件索引和用户名。

您是否尝试过这样做:

/**
 * @ORM\Entity(repositoryClass="ProjectBundle\Repository\User\UserRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
 * @ORM\Entity
 * @UniqueEntity(fields={"email", "username"}, groups={"registration"})
 * @ORM\Table(name="user")
 */

但请确保您有唯一的电子邮件和用户名索引。

目前,@CarcaBot的响应仅在DEV中有效,当文件和数据库相同时,更新不会改变PROD中的问题


一个想法?

目前,@CarcaBot的响应只在DEV中有效,当文件和数据库相同时,更新不会改变PROD中的问题


想法?

错误的可能重复项几乎相同,但建议的解决方案不起作用,我仍有SQL异常。错误的可能重复项几乎相同,但建议的解决方案不起作用,我仍有SQL异常。您的解决方案仅在开发中起作用。当我更新对产品的更改时,例外情况仍然存在。(数据库已经准备好了良好的索引)您的解决方案只在DEV中工作。当我更新对PROD的更改时,异常仍然存在。(数据库已准备好,索引良好)
/**
 * @ORM\Entity(repositoryClass="ProjectBundle\Repository\User\UserRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
 * @ORM\Entity
 * @UniqueEntity(fields={"email", "username"}, groups={"registration"})
 * @ORM\Table(name="user")
 */