- laravel 全局中间件下ConvertEmptyStringsToNull这个中间件,默认把空字符串转换为null,但是空字符串不是比null的效率要好么?
- 我数据库字段设置为
not null
, 并且设置默认值为空
,档表单传上来的时候如果没有值会被中间件转为null
,每次都要注释掉这个中间件,谁能讲下转为null到底为什么?哪里好?
- 追加一个图来描述
not null
, 并且设置默认值为空
,档表单传上来的时候如果没有值会被中间件转为null
,每次都要注释掉这个中间件,谁能讲下转为null到底为什么?哪里好?1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
785 阅读
问题1:
官方没有任何文献说明
空字符串
比null
效率高。问题2:
数据库设计是矛盾的,既然默认值是
空
,就没必要设置字段为not null
。如果你非要这样,你可以在controller
里面使用array_filter($request->all())
来过滤掉null
或者空字符串
的参数。最后,Laravel 是在 5.4 开始加入的,同时加入的还有
TrimStrings
, 官方的提交记录没有说明是为了什么,个人认为官方是为了标准化数据格式,进行统一规范。=======分割线=======
继续补充一下:
如果非要按照自己的要求来,也建议不要直接去注释掉官方的中间件引用,以免其他问题,可以定义你自己的 request,在request 处理这个参数的时候,修改成自己想要的值。
php artisan make:request YourRequest
=======继续割========
看官方描述的意思
TrimStrings
和ConvertEmptyStringsToNull
就是为了规范化数据。