首页  >  文章  >  后端开发  >  如何在更新期间使用独特约束重新验证 Laravel 模型?

如何在更新期间使用独特约束重新验证 Laravel 模型?

Barbara Streisand
Barbara Streisand原创
2024-10-24 17:49:02918浏览

How to Revalidate Laravel Models with Unique Constraints During Updates?

更新时使用唯一约束重新验证 Laravel 模型

使用强制执行唯一验证规则的 Laravel Eloquent 模型时,更新模型可以触发验证如果修改的值与现有记录匹配,则会出现错误。为了解决这个问题,开发人员经常在更新时重新验证模型的属性。但是,这种方法可能会导致所需的规则验证出现问题。

在提供的示例中,存储库中的 update 方法使用 validate 方法验证模型的属性。但是,此验证应用与创建新模型相同的独特规则。因此,使用现有值更新模型会导致验证失败。

要解决此问题,您可以自定义验证规则以忽略正在更新的实例的 id。

自定义验证规则:

  1. 将模型实例的 id 传递给验证器:
<code class="php">$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray(), ['id' => $user->id]);</code>
  1. 在验证器中,使用一个参数来区分更新和创建:
<code class="php">// Validation rules
'username' => Validator::make($data, [
    'username' => 'required|unique:users,username,' . ($id ?? null),
]);</code>
  1. 对于更新,强制唯一规则忽略指定的 id:
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
  1. 对于创建时,使用标准唯一规则:
<code class="php">'username' => 'required|unique:users,username',</code>

通过合并此自定义,框架将忽略现有 id 的唯一约束,允许您更新模型而不会因重复而触发验证错误字段值。

以上是如何在更新期间使用独特约束重新验证 Laravel 模型?的详细内容。更多信息请关注PHP中文网其他相关文章!

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