请问 Laravel 框架为什么会选择将请求参数的空字符串转换为 null 呢?
protected $middleware = [
.
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class
.
];
class ConvertEmptyStringsToNull extends TransformsRequest
{
protected function transform($key, $value)
{
return is_string($value) && $value === '' ? null : $value;
}
}
现在因为这个中间件,框架会把请求参数空字符串自动转为 null
,导致数据库保存报错。
我搜索了很多关于此点的回答大致解决方案有以下,但都没有回归到问题本质上面来。
- 去掉这条中间件的注册
- 在控制器中转换 $request->column ?: '';
为什么 Laravel 框架会选择将请求参数 空字符串 转换为 null
呢?
是否意味着框架鼓励我们将可选的数据库字段设置为 nullable
?
推荐文章: