我的数据库表中有一个名为 service_3_total
的字段,其类型为 decimal(10,2)
。我已将其设置为迁移中的 nullable()
字段,因此在我的数据库中 Null = Yes 和 Default = NULL。
如果我在提交表单时将此字段留空,我会收到以下错误:
General error: 1366 Incorrect decimal value: '' for column 'service_3_total'
我不知道为什么我会得到这个,因为我允许这个字段在数据库中为空。我认为这与它是十进制数据类型有关。
有什么想法吗?
最佳答案
在您的评论中,您声明要插入的变量的值为:
"service_3_total" => ""
空字符串 !== null
您传递的是空字符串而不是 null,因此 MySQL 尝试将“”解析为数字时出错。
类似的东西可以在您的代码中工作。只需在插入之前添加它。 (根据您的用例使其更优雅,这只是为了使其正常工作)
if (!$data['service_3_total']) {
$data['service_3_total'] = null;
}
当您现在尝试此操作时,MySQL 将正确地将值识别为 null 并将其原样输入到数据库中,空白字符串将不起作用。
关于php - Laravel 无法将空值插入可为空的数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417799/