Laravel将整数或浮点数验证为字符串


Laravel validate int or float numbers as string

在我的项目中。 所有挂载可能是 int 或 float,甚至是 double.in 数据库金额列类型是varchar,对于用户的每个选择金额,我有简单的限制,例如金额必须大于某个值,小于某个值。 但我在拉拉维尔得到了错误验证。

$ps = DB::table('merchant_web_service')->whereCustomerKey($request->input('customer_key'))->first();
/* $ps->minimum_range_buy is 5 and $ps->maximum_range_buy is 10*/
$validate_amount      = Validator::make($request->all(), 
            ['amount' => "required|min:$ps->minimum_range_buy|max:$ps->maximum_range_buy"]); 

验证器错误为:

"The amount must be at least 10 characters."

我的测试金额值:1000,100.1

由于您没有为输入数据类型指定任何规则,因此它会将其验证为字符串。尝试numericbetween规则。

$validate_amount = Validator::make($request->all(), 
     ['amount'=>
      "required|numeric|between:$ps->minimum_range_buy,$ps->maximum_range_buy"
     ]);

试试这个

$rules = [
'your_field' => 'required|regex:/^'d*('.'d{2})?$/'
]