更新时使用唯一约束重新验证 Laravel 模型
使用强制执行唯一验证规则的 Laravel Eloquent 模型时,更新模型可以触发验证如果修改的值与现有记录匹配,则会出现错误。为了解决这个问题,开发人员经常在更新时重新验证模型的属性。但是,这种方法可能会导致所需的规则验证出现问题。
在提供的示例中,存储库中的 update 方法使用 validate 方法验证模型的属性。但是,此验证应用与创建新模型相同的独特规则。因此,使用现有值更新模型会导致验证失败。
要解决此问题,您可以自定义验证规则以忽略正在更新的实例的 id。
自定义验证规则:
<code class="php">$user = $this->findById($id); $user->fill($data); $this->validate($user->toArray(), ['id' => $user->id]);</code>
<code class="php">// Validation rules 'username' => Validator::make($data, [ 'username' => 'required|unique:users,username,' . ($id ?? null), ]);</code>
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
<code class="php">'username' => 'required|unique:users,username',</code>
通过合并此自定义,框架将忽略现有 id 的唯一约束,允许您更新模型而不会因重复而触发验证错误字段值。
以上是如何在更新期间使用独特约束重新验证 Laravel 模型?的详细内容。更多信息请关注PHP中文网其他相关文章!