首页 > 解决方案 > Laravel 对多列的唯一验证

问题描述

我在表服务器中有 2 列。

我有列iphostname.

我有验证:

'data.ip' => ['required', 'unique:servers,ip,'.$this->id]

这仅适用于列ip。但是如何做到这一点hostname呢?

我想用列验证 data.ipiphostname. 因为当用户写 ip 时,ip 和 hostname 列中可以重复。

标签: phplaravelvalidation

解决方案


您可以使用Rule::unique来实现您的验证规则

$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
);

编辑:固定消息分配


推荐阅读