在 Laravel 中,唯一验证规则确保指定数据库列中值的唯一性。然而,在处理多个列时,验证它们组合的唯一性并不简单。
考虑到这个问题,我们在服务器表中有两列:ip 和主机名。要验证具有特定 ip 值的新记录与现有主机名值一起不存在于表中,我们可以利用 Rule::unique。
以下代码片段演示了如何实现所需的验证:
<code class="php">$messages = [ 'data.ip.unique' => 'Given ip and hostname are not unique', ]; Validator::make($data, [ 'data.ip' => [ 'required', Rule::unique('servers') ->where(function ($query) use ($ip, $hostname) { return $query->where('ip', $ip) ->where('hostname', $hostname); }), ], ], $messages);</code>
此验证规则检查服务器表中是否已存在具有相同 ip 和主机名组合的记录。如果是,则根据 $messages 中指定的自定义消息返回错误消息。通过定义 where 闭包,我们可以指定唯一性的确切条件,确保同时考虑 ip 和主机名值。
以上是如何在 Laravel 中验证多列的唯一性?的详细内容。更多信息请关注PHP中文网其他相关文章!