如何在 Laravel 中验证多个列的唯一性?

Linda Hamilton
发布: 2024-11-01 12:18:30
原创
758 人浏览过

How to Validate Uniqueness Across Multiple Columns in Laravel?

在 Laravel 中验证多列的唯一性

在 Laravel 中验证数据时,必须确保多列的唯一性以防止重复条目。这在多个值组合应该是唯一的场景中尤其重要,例如在提到的 IP 和主机名列都需要考虑唯一性的情况下。

多列上的唯一验证

为了验证多列的唯一性,Laravel 提供了 Rule::unique 规则。此规则允许您指定验证期间要考虑的表和列。

自定义验证规则

在给定场景中,目标是验证 ip 字段,考虑到ip 和主机名列。要实现此目的,您可以使用如下所示的自定义规则:

<code class="php">use Illuminate\Validation\Rule;

$data = [
    'ip' => '192.168.0.1',
    'hostname' => 'server-1',
];

$messages = [
    'data.ip.unique' => 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'ip' => [
        'required',
        Rule::unique('servers')
            ->where(function ($query) use ($ip, $hostname) {
                return $query->where('ip', $ip)->where('hostname', $hostname);
            }),
    ],
], $messages);

if ($validator->fails()) {
    // Handle validation errors...
}</code>
登录后复制

说明

  • rule::unique 规则指定服务器表,其中包含 ip 和主机名列。
  • 规则中的 where 闭包定义了唯一性需要满足的条件。在这种情况下,它会检查 ip 和主机名是否与数据库中的任何现有记录匹配。
  • 自定义错误消息 Give ip and hostname are not unique 与 data.ip.unique 验证规则相关联。

结论

通过使用带有自定义 where 条件的 Rule::unique 规则,可以有效确保 Laravel 中多个列的唯一性。这种方法允许更具体和灵活的数据验证,特别是在考虑初始查询中提到的场景时。

以上是如何在 Laravel 中验证多个列的唯一性?的详细内容。更多信息请关注PHP中文网其他相关文章!

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