在 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>
说明
结论
通过使用带有自定义 where 条件的 Rule::unique 规则,可以有效确保 Laravel 中多个列的唯一性。这种方法允许更具体和灵活的数据验证,特别是在考虑初始查询中提到的场景时。
以上是如何在 Laravel 中验证多个列的唯一性?的详细内容。更多信息请关注PHP中文网其他相关文章!