php - Laravel:验证大于零的数字失败

标签 php laravel validation laravel-validation

我必须验证一个价格字段,该字段需要大于零(0.01 有效),因此我进行以下验证:

$request->validate([
            'product_price' => 'required|numeric|gt:0',
        ]);

问题是,当我在“product_price”字段中输入字符串时,出现错误:

InvalidArgumentException The values under comparison must be of the same type

这是为什么呢?我的意思是,我在检查它是否 > 0 之前检查它是否应该是数字

最佳答案

Laravel 5.6 及更高版本中添加了

gtgteltlte,我是猜测这一定是您收到错误的原因。 (不过它对我有用。)

我想你可以这样尝试

$request->validate([
    'product_price' => 'required|numeric|min:0|not_in:0',
]);

min:0 确保最小值为 0 并且不允许有负值。 not_in:0 确保值不能为 0。因此,这两个规则的组合可以完成这项工作。

您可以为某些规则定义有意义的错误消息。 (您也可以使用正则表达式获得相同的结果。)

关于php - Laravel:验证大于零的数字失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397729/

相关文章:

php - 来自 PHP 的带有 src 的“另存为”图像

php - 如何用 and 条件选择几个值?

ruby-on-rails - rails 4 : How to check validation errors from inside a controller

spring - Spring Data MongoDb-如何使用仅返回有效文档的“findAll”方法

Java while循环不重复

php - 具有大小写类名的自动装带器

php - 用小数制作一个简单的for循环

mysql - Laravel Blade 输入隐藏值请求仅给出最后一个值,如何获取请求中的唯一 id?

php - 如何用mysql转义引号内的反斜杠

mysql - Laravel Eloquent : Using ->update(), 如果不是 "integrity constraint violation: 1062 Duplicate entry",则只需更新