一尘不染

Laravel在多个列上进行唯一验证

php

我在表服务器中有2列。

我有专栏iphostname

我有验证:

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

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

我想列验证data.ip iphostname。因为在用户写入ip时,ip和主机名列中可以重复。


阅读 234

收藏
2020-05-29

共1个答案

一尘不染

您可以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
);
2020-05-29