使用NULL更新可为空的列会引发错误

时间:2018-11-02 18:19:17

标签: php mysql laravel datetime

我正在将Laravel框架v5.5与MySQL数据库一起使用。我正在尝试创建/更新记录,但出现以下错误。在我的案例中发布的列的格式设置为DATE,并且可以为空。但是,如果我尝试使用null更新该列,则会引发错误。

请求数据:

{"id":4776,"name":"test","published":null}

错误:

  "message": "SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '' for column 'published' at row 1

我当然可以删除在MySQL处理之前发布的参数,但是随后我必须在许多地方对此参数以及其他参数进行处理。另一个选择是禁用严格模式,但我宁愿不这样做。还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

如果您收到一个null值,则必须将其原样传播到Eloquent层,或者在到达该值之前将其从参数中清除掉。

虽然数据库NULL是{em}可以为DATETIME的{​​{1}}列的有效值,但空字符串不是。从NULL到空字符串的任何形式的转换都会在这里给您带来麻烦。

除非您特别需要将字段清空,否则清理空参数通常是个好主意。