我创建了一个简单的表单,将一些数据发送到 mysql 数据库。
当输入名称
或电子邮件
时,一切正常。除了复选框之外。当所有复选框都被选中时,它会运行 perfekt,但如果没有 -> 我总是收到此错误:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'checkbox1' cannot be null
所以我得到了这个来创建表单:
{{Form::label('checkboxlabel', 'Agree')}} {{Form::checkbox('checkbox1',1, true)}}
这是我的迁移文件:
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('email')->unique(); $table->boolean('checkbox1')->nullable();
这是我的 Controller 文件:
$user = new User; $user->email= $request->input('email'); $user->checkbox1= $request->input('checkbox1');
对此有什么帮助吗?只是想要一些 true 或 false 值来检查或不检查。谢谢大家!
最佳答案
发生了一些奇怪的事情,但根据你的问题,我认为这并不重要......
复选框的工作方式是,如果未选中它们,则不会向服务器发送任何内容。因此,使用您当前的代码,checkbox1 字段将始终为 true 或 null,它永远不会为 false,因为 false 永远不会作为值发送到服务器。
您可能需要做的是在插入时应用默认值...
$user->checkbox1= $request->input('checkbox1', 0);
这样,如果未选中该复选框,您的代码将假定为 false 并将其插入数据库中。
现在发生了奇怪的事情,您的错误消息表明您无法将 null 插入该列,但您已经在迁移中非常明确地将该字段设置为可为空。这些是相同的字段吗?您是否可以更新迁移而不重新运行它来更新数据库中的架构?
您能否运行语句 show create table users
并使用该查询返回的内容更新您的问题?
关于php - laravel复选框插入mysql数据库 'Integrity constraint violation',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47206209/