Laravel:实现跨多个表列的唯一验证
对于数据库中包含多个列的表的情况,这些列的组合必须保持唯一,有必要在 Laravel 应用程序中强制执行此唯一性约束。
一个这样的示例是包含“ip”和“主机名”列的“服务器”表。您希望确保特定“ip”和“主机名”的组合是唯一的,即使单个“ip”或“主机名”值可能出现多次。
使用规则的解决方案:: unique()
要实现此验证,请使用 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”和“主机名”组合。
以上是如何在 Laravel 中跨多个列强制执行唯一验证?的详细内容。更多信息请关注PHP中文网其他相关文章!