【发布时间】:2017-10-17 23:07:43
【问题描述】:
例子:
Validator::make(['x' => ''], ['x' => 'nullable|integer|min:1'])->errors()->all();
输出:
[]
当x 为 null 或 1,2,3 等时,它工作正常。
当x 是除空字符串之外的其他内容时,验证器表示错误。
数据库中的列可以是 NULL 或正整数,所以当我传递空字符串时,验证器告诉我这很好,但 mysql 会抛出异常,因为它试图将 ''(空字符串)保存在可为空的整数列中。
字段的唯一允许值是:null、1,2,3,4,...,其他一切都应该失败。
如果我添加 required 规则,则验证器会因 null 值('nullable|required|integer|min:1')而失败
【问题讨论】:
-
规则
nullable只说,该值可以是null,但它不会将空值转换为null本身。 -
该值不为空,因此
nullable在这里实际上并不有效。如果你这样做Validator::make(['x' => ''], ['x' => 'integer|min:1'])->errors()->all();你仍然没有错误
标签: laravel laravel-validation