Php laravel复选框插入mysql数据库“完整性约束冲突”

Php laravel复选框插入mysql数据库“完整性约束冲突”,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我创建了一个简单的表单,将一些数据发送到mysql数据库。 当输入姓名或电子邮件时,一切正常。除了复选框。选中所有复选框时,它将运行perfekt,但如果未选中->我始终会收到此错误: SQLSTATE[23000]:完整性约束冲突:1048列“checkbox1” 不能为空 所以我在创建表单时得到了这个: 这是我的迁移文件: 这是我的控制器文件: 有什么帮助吗?只需要检查或不检查的一些真值或假值。伙计们 如果布尔值不明确需要空值,可以执行以下操作: // Inside your migrati

我创建了一个简单的表单,将一些数据发送到mysql数据库。 当输入姓名或电子邮件时,一切正常。除了复选框。选中所有复选框时,它将运行perfekt,但如果未选中->我始终会收到此错误:

SQLSTATE[23000]:完整性约束冲突:1048列“checkbox1” 不能为空

所以我在创建表单时得到了这个:

这是我的迁移文件:

这是我的控制器文件:


有什么帮助吗?只需要检查或不检查的一些真值或假值。伙计们

如果布尔值不明确需要空值,可以执行以下操作:

// Inside your migration
$table->boolean('checkbox1')->default(false);

// Inside the controller
$user->checkbox1 = $request->input('checkbox1');
或者,如果请求中未设置该值,则可以设置默认值:

// Inside your migration
$table->boolean('checkbox1');

// Inside the controller
$user->checkbox1 = $request->input('checkbox1', 0);

有一些奇怪的事情正在发生,但根据你的问题,我认为这不重要

按照复选框的工作方式,如果未选中复选框,则不会向服务器发送任何内容。因此,使用当前代码,checkbox1字段将始终为true或null,它永远不会为false,因为false永远不会作为值发送到服务器

您可能需要做的是在插入

$user->checkbox1= $request->input('checkbox1', 0);
这样,如果未选中复选框,代码将假定为false并将其插入数据库

现在,对于正在发生的奇怪的事情,您的错误消息表明您不能在该列中插入null,但是您已经在迁移中非常清楚地将该字段设置为null。这些是相同的字段吗?您是否可能在不重新运行迁移以更新数据库中的架构的情况下更新迁移


您能否运行show create table users语句,并使用该查询返回的内容更新您的问题?

您能否粘贴整个控制器?这只是一个代码段,您可以使用$request->has'checkbox1';为了得到一个bool。Thx伙计们,这起作用了!刷新并再次开始迁移!
// Inside your migration
$table->boolean('checkbox1')->default(false);

// Inside the controller
$user->checkbox1 = $request->input('checkbox1');
// Inside your migration
$table->boolean('checkbox1');

// Inside the controller
$user->checkbox1 = $request->input('checkbox1', 0);
$user->checkbox1= $request->input('checkbox1', 0);