我有UniqueEntity字段电子邮件,我使用SoftDeleteable
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @UniqueEntity(
* fields="email",
* errorPath="not valid",
* message="This email is already in use."
* )
当我在我的数据库中时,我的用户已经删除某个日期并通过电子邮件找到实体
$user_by_email = $em->getRepository('ArtelProfileBundle:Users')->findOneByEmail($email);
我有空,这没关系。但是当我创建新用户时,我有错误
Integrity constraint violation: 1062 Duplicate entry 'wwwwwdww@1111.com' for key 'UNIQ_1483A5E9E7927C74'",
这是我的行动。但是在刷新时有错误,当验证没有错误时。帮助
$data = $request->request->all();
$data = $this->get('serializer')->serialize($data, 'json');
$user = $this->get('serializer')->deserialize($data, 'Artel\ProfileBundle\Entity\Users', 'json');
if (count($errors = $this->get('validator')->validate($user)) > 0) {
$view = $this->view((string) $errors, 400);
return $this->handleView($view);
}
$em->persist($user);
$em->flush();
答案 0 :(得分:1)
嗯,您对email
有一个独特的约束,并且您尝试使用现有的电子邮件插入新用户..因此错误非常有意义。
SoftDeleteable 只是在您的数据库中添加了一个标志,但不会更改管理唯一字段的方式。
但是,您可以做的是使email
和deleted_at
对唯一,而不仅仅是email
字段。只有在电子邮件不相同的行中,您才会收到此错误。
或者,或者,例如,在“软删除”用户时删除电子邮件。但我不推荐它。