如何使用唯一的验证规则更新 Laravel 模型而不出现错误?

Patricia Arquette
发布: 2024-10-24 19:18:30
原创
559 人浏览过

How to Update a Laravel Model with Unique Validation Rules Without Errors?

Laravel:使用唯一的验证规则更新模型

在 Laravel 中,模型更新期间验证字段对于确保数据完整性至关重要。但是,更新现有记录时,唯一的验证规则可能会导致问题。

请考虑 Repository 类中的以下代码:

<code class="php">public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();

    return $user;
}</code>
登录后复制

此代码尝试重新验证模型的字段,包括诸如“用户名”和“电子邮件”。但是,当尝试使用现有唯一值更新记录时,此方法可能会导致验证错误。

要解决此问题,我们需要从验证中排除当前记录,以允许在不违反唯一约束的情况下进行更新。我们可以通过将正在更新的实例的 id 附加到验证器来实现这一点。具体方法如下:

  1. 传递实例的 id:
    将正在更新的实例的 id 传递给更新方法:

    <code class="php">public function update($id, $data) {
        $user = $this->findById($id);
        $user->fill($data);
        $this->validate($user->toArray(), ['id' => $id]);
        $user->save();
    }</code>
    登录后复制
  2. 从验证中排除当前记录:
    在验证器中,我们使用 id 参数来检测是否正在更新或创建资源:

    • 更新: 对于唯一验证规则,将 ,{$id} 附加到规则以排除当前记录。例如:

      <code class="php">'email' => 'unique:users,email,{$id}',</code>
      登录后复制
    • 创建: 对于唯一验证规则,请勿包含 id。例如:

      <code class="php">'email' => 'unique:users,email',</code>
      登录后复制

通过遵循这些步骤,我们可以优雅地更新 Laravel 模型,同时确保遵守唯一的验证约束。

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

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