电子邮件地址字段的值已被使用。 laravel 请求验证

Posted

技术标签:

【中文标题】电子邮件地址字段的值已被使用。 laravel 请求验证【英文标题】:The value of the email address field is already used. laravel request validation 【发布时间】:2021-08-05 14:35:15 【问题描述】:

我在请求字段中的验证有问题,我使电子邮件独一无二,当我添加新行时它工作得很好,但是当我更新它们时我遇到了问题,这是因为用户数据库,那么如何在更新步骤中忽略电子邮件字段?

这是我的验证行: '电子邮件' => '必填 |唯一:用户,电子邮件'

我实际上正在添加员工并自动添加用户,所以我现在正在尝试将验证添加到员工请求中,同时找到一个解决方案,可以在更新进度开启时忽略电子邮件

非常感谢。

【问题讨论】:

尝试从更新方法的验证中删除 unique:users,email。 @MuhammadTashfeen 这不是正确的方法,如果您这样做,那么用户可能会不小心选择已使用的电子邮件地址! @Aless55 你是对的。我的错。 【参考方案1】:

您能否从控制器分享您的更新方法以查看您的查询。我认为您的更新查询不是从请求中获取电子邮件,而是添加旧的。在这种情况下,如果更新查询可以工作,它不应该显示唯一错误。因此,您的查询必须在那里没有更新,而是向该字段添加新条目。 从验证中删除 unique 并检查它是否正在添加新条目或更新条目。如果它正在添加新条目,那么您应该重试查询。但是如果你能在这里分享你的更新方法会很有帮助。

【讨论】:

【参考方案2】:
'email' => 'unique:users,email_address,'.$user->id

【讨论】:

【参考方案3】:

更新您的验证规则以忽略当前用户触发的唯一要求:

'email' => 'required|email|unique:users,email,'.auth()->user()->id,

以上将阻止其他用户将他们的电子邮件更改为数据库中存在的电子邮件,但是,当他们只是更新自己的信息时,不会触发unique 错误。

【讨论】:

我实际上正在添加员工并自动添加用户,所以我现在正在尝试将验证添加到员工请求中,同时找到一个可以使电子邮件被忽略的解决方案,而更新进度正在进行中 @LAKHDARMohamed 您能否详细说明(在您的原始问题中)您要整体做什么,因为这将有助于提供准确的解决方案。 谢谢你,这就是我要做的事情

以上是关于电子邮件地址字段的值已被使用。 laravel 请求验证的主要内容,如果未能解决你的问题,请参考以下文章

Flutter GetBuilder Dependent DropDownButton - 即使值已被重置,也应该只有一项具有 [DropdownButton] 的值

如果电子邮件已存在或为空,请检查文本输入

为啥编译器没有注意到布尔值已被声明为真?

Laravel 5 & 在单个字段中验证多个电子邮件地址

值限制 - 该值已被推断为具有泛型类型

更新字段时,UITextField“值已更改”未触发