laravel - Laravel 5.6 空字段验证
问题描述
不知何故,我觉得这应该是一个常见的问题,但我似乎无法找到一个明确的答案。
问题很简单:在验证表单时,我想从结果数组中排除空的非必需字段 - 这是为了使用在数据库级别设置的默认值。
由于 Laravel 默认使用 ConvertEmptyStringsToNull 中间件(我并不热衷于更改它),这意味着我的空字段将被转换为“null”并发送到我的数据库(因此没有得到它们的默认值,实际上是破坏查询,因为这些字段在数据库级别不可为空)。
$userData = $request->validate([
'email' => 'required|string|email|max:255|unique:users',
'number_of_whatever' => //if this field is empty, I want it stripped out the $userData array - or automatically default to the database default
]);
任何有关如何以最干净的方式解决此问题的帮助将不胜感激!我正在考虑制定一个自定义规则来排除字段本身(这样我就可以在整个项目中重用这个验证规则,而不必每次遇到这种情况时都手动执行)。另一种选择是将它设置在模型级别 - 但不是那么热衷于这样做,当它已经在数据库级别完成时必须在那里执行它似乎很奇怪。
谢谢!
解决方案
我认为您可以使用可为空的规则
$userData = $request->validate([
'email' => 'required|string|email|max:255|unique:users',
'number_of_whatever' => 'nullable'
]);
推荐阅读
- android - 在 WebView 中隐藏没有 Id 和类名的 HTML 元素
- python - 为什么随机生成器不起作用?Python
- ruby-on-rails - 如何使 activerecord-import 使用序列
- javascript - 在jQuery中通过width()输出错误的div宽度
- c# - Xamarin 表单:如何在列表视图中搜索
- javascript - InvalidSessionDescriptionError:答案更改中间级别,为“3”,现在为“0”
- reactjs - ReactJS 预加载导航元素
- php - 致命错误:未捕获的错误:调用成员函数 close() on
- java - 连接到 WiFi 时检查互联网连接
- yadcf - 过滤器字段在表格重绘时重置