Laravel - 常规错误:1366不正确的整数值

时间:2016-10-21 08:36:36

标签: php mysql laravel

当我尝试保存或更新模型时,对于字段spid_id,我收到的错误如下。我不确定有什么问题。

  

常规错误:1366错误的整数值:''对于列&spid_id'   在第1行(SQL:更新magazines设置spid_id =,updated_at =   2016-10-21 08:28:46,summary =其中id = 8)

这就是我的表格:

       Schema::create('magazines', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('visual_id')->nullable();
            $table->integer('spid_id')->nullable();
            $table->timestamps();
        }); 

我试图通过迁移来改变我的spid_id在数据库中不可为空,因为我认为这可能是一个原因:

        Schema::table('magazines', function (Blueprint $table) {
            $table->integer('spid_id')->change();
        });

但该领域仍然可以为空。

这是我创建表单的商店功能:

        $magazine = Magazine::create([
          'name' => $request->input('name'),
          'visio_link_prefix' => $request->input('visio_link_prefix'),
          'spid_id' => $request->input('spid_id'),
          'summary' => $request->input('summary'),
        ]);

2 个答案:

答案 0 :(得分:1)

在保存之前,您需要检查请求中是否存在spid_id。例如,在您的情况下,它将如下所示:

'spid_id' => $request->has('spid_id') ? $request->input('spid_id') : NULL,

答案 1 :(得分:1)

创建记录的另一种方法是使用雄辩的对象

    $magazine = new Magazine
    $magazine->name = $request->input('name');
    $magazine->visio_link_prefix = $request->input('visio_link_prefix')
    $magazine->spid_id = $request->input('spid_id', null);
    $magazine->summary = $request->input('summary');
    $magazine->save();

这将确保它自动指定您在模型中指定的空值或默认值。