首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony原理UniqueEntity

Symfony原理UniqueEntity
EN

Stack Overflow用户
提问于 2016-01-13 10:41:21
回答 1查看 362关注 0票数 2

我有UniqueEntity字段的电子邮件,我使用SoftDeleteable

代码语言:javascript
复制
        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,并通过电子邮件查找实体

代码语言:javascript
复制
$user_by_email = $em->getRepository('ArtelProfileBundle:Users')->findOneByEmail($email);

我是空的,这个没问题。但是,当我创建新用户时,会出现错误。

代码语言:javascript
复制
Integrity constraint violation: 1062 Duplicate entry 'wwwwwdww@1111.com' for key 'UNIQ_1483A5E9E7927C74'",

这是我的行动。但在刷新时有错误,验证时没有错误。帮助

代码语言:javascript
复制
        $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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 11:55:06

那么,您对email有一个独特的限制,您尝试用已经存在的电子邮件插入一个新用户。所以这个错误是完全合理的。

SoftDeleteable只是在您的DB中添加了一个标志,但不会改变唯一字段的管理方式。

但是,您可以做的是使这对emaildeleted_at成为唯一的,而不仅仅是email字段。只有当电子邮件是相同的未删除行时,您才会收到此错误。

或者,或者,当你“软删除”一个用户时,删除电子邮件。但我不推荐。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34764502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档