SQLSTATE [22007]:无效的日期时间格式:1366错误的整数值:列“ isVisible”的“ true”

时间:2019-11-12 15:10:54

标签: php laravel

我正在将带有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',那么我的Post条目将被成功创建。

有什么办法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在数据库之前发送

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

答案 1 :(得分:0)

Laravel为此提供了一个很好的解决方案:

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

(如果未选中该复选框,则不会在$ request包中显示该复选框,因此“具有”功能将输出false。如果选中,则返回true(为布尔值)。