带有gte:1的Laravel验证数字引发异常

时间:2019-02-21 07:35:07

标签: laravel validation

为什么Laravel抛出

  

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

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

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

当期望只是不通过验证和显示消息时:

account_no field must be numeric

如何解决此异常?

2 个答案:

答案 0 :(得分:4)

Merdan gte验证下的字段必须大于或等于给定的field。两个fields必须具有相同的类型。

示例,假设您有两个字段

POST DATA
// $request->comparison = 1;
// $request->account_no = 20319312;

您的规则应类似于

return [
    'account_no' => 'required|numeric|gte:comparison'
];

答案 1 :(得分:1)

您必须使用gte,在Laravel 5.6和最新版本中添加了gtgte,但我不确定您使用的是哪个laravel版本。

我认为您可以像这样尝试

public function rules()
{
    return [
        'account_no' => 'required|numeric|min:1'
    ];
}

OR

public function rules()
{
    return [
        'account_no' => 'required|numeric|min:0|not_in:0'
    ];
}

min:1是最小值1,不允许有负值
not_in:0的值不能为0。

此外,您也可以使用regular expression来完成这项工作。

我希望这会有所帮助。谢谢