php - laravel复选框插入mysql数据库 'Integrity constraint violation'

标签 php mysql laravel laravel-5

我创建了一个简单的表单,将一些数据发送到 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/

相关文章:

从 csv LOAD DATA LOCAL INFILE 后 MySQL 变慢

php - Laravel Backpack - Eloquent 试图在数据库列重命名后将数据插入错误的列名

php - 无法使用 "npm run watch"编译 sass - Laravel

php - 搜索字符串和返回行 PHP

MySQL拒绝使用索引进行简单查询

php - PDO 从选择查询中获取一列

php - Vue.js 没有正确更新 URL

php - 快速访问文件

php - Symfony 中的 Doctrine 迁移

php - 基于2个子元素选择元素