如何验证以检查 table 中是否存在具有此值的记录?

How can I validate to check if a record having this value exists in a table?

我正在做一个 Laravel 项目,我有以下与验证相关的问题。

过去我创建了这个验证规则(与新用户注册表相关):

$rules = [
    'name' => 'required',
    'surname' => 'required',
    'login' => 'required|unique:pm_user,login',
    'email' => 'required|email|confirmed|unique:pm_user,email',
    'pass' => 'required|required|min:6',
    'g-recaptcha-response' => 'required|captcha',
];

特别是这个规则数组包含这个规则:

'login' => 'required|unique:pm_user,login',

在我看来,最后一条规则检查插入的登录名是否还不存在于 pm_user table 中(因此它确保pm_user table 中不存在具有相同插入值的行 login 列)。

是吗?如果我做错了断言,请纠正我。

如果现在以这种方式工作,我的问题是如何在另一组验证规则中做相反的事情。

特别是我有另一个规则数组(定义为 class extendingFormRequest:

public function rules() {
    return [
        'email' => 'required|email',
        'token' => 'required',
    ];
}

特别是我必须确保在 pm_user table 中还存在一个具有名为 的列的值的记录email 与请求的 emai 字段相同。

如何更改此请求以执行此验证规则?

Laravel 5.4 已经有一个名为 exists 的内置验证规则。 https://laravel.com/docs/5.4/validation#rule-exists

我想你正在寻找:

'email' => 'required|email|exists:pm_user,email'