php - Laravel 无法将空值插入可为空的数据库字段

标签 php mysql laravel decimal

我的数据库表中有一个名为 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/

相关文章:

php - 如何截取整个桌面?

mysql - 错误代码 : 3175. 无法在基列具有外部约束的虚拟列上创建索引

php - 我可以在查询中同时使用 REPLACE 和 SET 吗?

php - 通过 php domdocument 解析器获取文档元素的子元素

javascript - 使用 ckeditor 内联编辑后无法保存数据

php从序列化数据中获取满足条件的行

mysql - 将多行转换为列

php - 方法 [validateRequire] 不存在

php - 为什么与注册关联的注册类型信息显示不正确?

laravel - 我们应该在 Web 服务器上的哪里存储 APNs p8 key ?