如何更新 Laravel 集体中的唯一字段? [复制]

Posted

技术标签:

【中文标题】如何更新 Laravel 集体中的唯一字段? [复制]【英文标题】:How to update unique field in Laravel collective? [duplicate] 【发布时间】:2019-06-04 00:36:23 【问题描述】:

我有一个用户管理面板,管理员可以在其中创建更新用户,而用户有一个独特的电子邮件字段。当我不想更改电子邮件地址时更新它应该是原样。但向我抛出错误,例如:The email has already been taken.

我已经试过了:

    How to prevent insert email if already exist with specific id in laravel?

    https://laravel.com/docs/5.2/validation#rule-unique

和我的用户模型规则

'email' => 'required|unique:users,email,$user->id'

我在这里缺少什么? 请帮忙

【问题讨论】:

我觉得更新用户的电子邮件地址不是一个好主意。这样,您将永远不会在表单中包含该字段。 可能会提供更多有关您为什么要这样做的背景信息。 【参考方案1】:

如果用户只更改名称字段而不更改电子邮件字段,您不希望抛出验证错误,因为用户已经是电子邮件地址的所有者。

你可以像这样使用:

'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
],

阅读 强制使用唯一规则以忽略给定 ID 部分: LINK

【讨论】:

以上是关于如何更新 Laravel 集体中的唯一字段? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:更新和创建时验证唯一

具有唯一字段的 Laravel 验证服务

laravel 中的唯一字段验证问题

如何编写迁移来撤消Laravel中的唯一约束?

在 laravel 中更新数据时显示错误的唯一键验证

在 laravel 5 中更新具有唯一列的模型