在 Laravel 中验证多列的唯一性
在 Laravel 中验证数据时,必须确保多列的唯一性以防止重复条目。这在多个值组合应该是唯一的情况下尤其相关,例如在提到的 IP 和主机名列都需要考虑唯一性的情况下。
多列上的唯一验证
为了验证多列的唯一性,Laravel 提供了 Rule::unique 规则。此规则允许您指定验证期间要考虑的表和列。
自定义验证规则
在给定场景中,目标是验证 ip 字段,考虑到ip 和主机名列。为此,您可以使用如下自定义规则:
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...
}
说明
结论
通过使用带有自定义 where 条件的 Rule::unique 规则,您可以有效地确保 Laravel 中多个列的唯一性。这种方法允许更具体和灵活的数据验证,特别是在考虑初始查询中提到的场景时。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3