为什么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
如何解决此异常?
答案 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和最新版本中添加了gt
和gte
,但我不确定您使用的是哪个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
来完成这项工作。
我希望这会有所帮助。谢谢