首页 >后端开发 >php教程 >## 如何在 Laravel 中使用独特的验证规则更新模型而不出现错误?

## 如何在 Laravel 中使用独特的验证规则更新模型而不出现错误?

Patricia Arquette
Patricia Arquette原创
2024-10-25 07:32:28619浏览

## How to Update Models with Unique Validation Rules in Laravel Without Errors?

Laravel:使用独特的验证规则更新模型

在 Laravel 中更新模型时,通过验证确保数据完整性至关重要。然而,用户名和电子邮件等属性的独特验证规则可能会带来挑战。

问题陈述

在假设的用户模型中,用户名和电子邮件具有唯一的验证规则,使用存储库更新记录可能会触发验证错误:

public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();
    return $user;
}

测试失败,返回:

ValidationException: {"username":["The username has already been taken."],"email":["The email has already been taken."]}

解决方案:忽略当前实例的唯一规则

为了优雅地解决此问题,可以忽略当前正在更新的实例的唯一验证规则。

  1. 将实例 ID 传递给验证器:

    在存储库方法中,将正在更新的实例的 ID 传递给 validate 方法。

  2. 在验证器中使用参数来区分创建和更新:

    在验证规则中添加一个参数,指示该操作是更新还是创建。

更新规则:

强制唯一规则忽略当前 ID:

'email' => 'unique:users,email_address,' . $userId,

创建规则:

照常进行唯一规则:

'email' => 'unique:users,email_address',

通过合并这些更改,可以在不妨碍现有记录更新的情况下强制执行唯一验证规则。

以上是## 如何在 Laravel 中使用独特的验证规则更新模型而不出现错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn