【问题标题】:SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'true' for column 'isVisible'SQLSTATE [22007]:无效的日期时间格式:1366 不正确的整数值:“isVisible”列的“true”
【发布时间】:2020-05-20 18:31:11
【问题描述】:

我正在将带有 FormData 对象的数据发送到我的 laravel 后端,问题是我有一个复选框输入,这给我带来了麻烦,我的后端记录了以下错误消息:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'true' for column 'isVisible' ...

在我的迁移中 isVisible 字段被声明为布尔值:

$table->boolean('isVisible')->default(false);

如果我侵入有效负载并发送 1 而不是 'true' 或 0 而不是 'false' 我的帖子条目将成功创建。

知道如何解决这个问题吗?

【问题讨论】:

  • 将值发送为 1 或 0 或在控制器中更改它,然后再保存到 DB。
  • 或使用TRUE/FALSE 不带引号。通过引用这些值,您将它们作为布尔值作为字符串发送。
  • 请查看您的数据库表。 isVisible 的数据类型应为 tinyint,长度为 1,默认值为 0。现在您可以使用TRUEFALSE 甚至10 来存储这些值,而无需引用。

标签: php laravel


【解决方案1】:

在数据库之前发送这个

$isVisible === true || strtolower($isVisible) == 'true'

【讨论】:

    【解决方案2】:

    Laravel 有一个很好的解决方案:

    $model->is_visible = $request->has('isVisible');
    

    (如果未选中复选框,则不会出现在 $request 包中,因此'has'函数将输出 false。如果选中,则返回 true(作为布尔值)。

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2021-02-14
      • 2021-07-23
      • 2021-08-22
      • 1970-01-01
      • 2021-05-25
      • 2017-11-04
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多