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

Barbara Streisand
发布: 2024-10-24 17:49:02
原创
917 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!