我有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."
* )在我的数据库中,我有用户使用deletedAt,并通过电子邮件查找实体
$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();发布于 2016-01-13 11:55:06
那么,您对email有一个独特的限制,您尝试用已经存在的电子邮件插入一个新用户。所以这个错误是完全合理的。
SoftDeleteable只是在您的DB中添加了一个标志,但不会改变唯一字段的管理方式。
但是,您可以做的是使这对email和deleted_at成为唯一的,而不仅仅是email字段。只有当电子邮件是相同的未删除行时,您才会收到此错误。
或者,或者,当你“软删除”一个用户时,删除电子邮件。但我不推荐。
https://stackoverflow.com/questions/34764502
复制相似问题