-
起先发现项目 sql 报错:入库时 not null 字段出现 null值;
-
考虑特殊字符问题,后排查 sql 发现确实存在为空,且用特殊字符测试未出现问题;
-
前端解析字符串生成字段信息,后端未做处理直接入库,考虑不是业务逻辑导致 null 值出现;
-
查询 laravel 框架相关信息,发现对于 http 请求,存在一个名为
ConvertEmptyStringsToNull
的中间件,包含如下方法
protected function transform($key, $value)
{
return is_string($value) && $value === '' ? null : $value;
}
发现其遍历了全部请求参数处理空字符串为 null
- 处理方法:
- 业务逻辑中对 null 值进行处理
- 去掉该中间件,不对空字符串进行处理