Laravel 7.x-如何在规则验证中比较两个字段



我正在尝试为注册表单中的邀请字段创建一个自定义验证。

我有一个名为邀请的表格,如下所示:

invites
-id, 
-description, 
-qty
-used

假设我有一个邀请(ID(IVRZ5L,数量=10,使用=10。注意,在这种情况下,我不能使用这个邀请(IVRZ5L(,因为所有的邀请都已使用。

我想检查数量是否大于已使用的数量,并避免如果所有邀请数量都已使用,用户将被注册。

在我的RegisterController中,我有这样的验证器方法:

protected function validator(array $data)
{
return Validator::make($data, [                        
'invite' => ['bail', 'required', Rule::exists('invites', 'id')->where(function ($query) {
$query->where('qty', '>', 'used');
})],
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}

此规则不适用于邀请字段。我做错了什么?

谨致问候。

protected function validator(array $data)
{
return Validator::make($data, [                        
'invite' => [
'bail', 
'required',
Rule::exists('invites', 'id')->where('qty', '>', 'used')
],
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}

最新更新