带有 gte:1 的 Laravel 验证数字抛出异常

mer*_*dan 5 validation laravel

为什么 Laravel 抛出

InvalidArgumentException('The values under comparison must be of the same type');

例外,当在规则上输入非数字文本(如“test”)时:

public function rules()
{
    return [
        'account_no' => 'required|numeric|gte:1'
    ];
}
Run Code Online (Sandbox Code Playgroud)

当预期只是不通过验证并显示消息时:

account_no field must be numeric

如何解决这个异常?

Dem*_*owh 5

Merdangte验证的字段必须大于或等于给定的field。两者fields必须是同一类型。

例如,假设您有两个字段

POST DATA
// $request->comparison = 1;
// $request->account_no = 20319312;
Run Code Online (Sandbox Code Playgroud)

你的规则应该是这样的

return [
    'account_no' => 'required|numeric|gte:comparison'
];
Run Code Online (Sandbox Code Playgroud)

  • 因为额外的信息是使用 `'required|numeric|min:1'` 而我猜对于 `account_no` 来说 `integer` 会比 `numeric` 更好 (2认同)