试图将(可空的)外键字段设置为null时,Laravel“违反完整性约束”

时间:2018-11-28 09:17:48

标签: mysql laravel

当我尝试使用更新语句将外键设置为null时,出现以下错误:

SQLSTATE[23000]: Integrity constraint violation: 19 FOREIGN KEY constraint failed (23000)

但是,如果我直接在数据库上执行完全相同的查询,那将起作用。

控制器

public function updateRelease(WishReleaseChangeRequest $request, Wish $wish)
{
    $wish->release_id = empty($request->get('release')) ? null : $request->get('release');
    $wish->save();

    return redirect()->route('wishes.show', ['wish' => $wish]);
}

迁移

public function up()
{
    Schema::create('wishes', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('release_id')->unsigned()->nullable()->default(null);
        $table->string('title', 100);
        $table->text('description')->nullable();

        $table->softDeletes();
        $table->timestamps();

        $table->foreign('release_id')->references('id')->on('releases');
    });
}

如您所见,是否还向该列添加了“可为空”。

为什么这不起作用?在stackoverflow上发现了许多有关此错误的问题,但在每种情况下,开发人员都忘记设置“ nullable”属性。但就我而言,这已确定。所以我不知道我能尝试什么。

我正在将Laravel 5.7与PHP 7.2和SQLite一起使用。

0 个答案:

没有答案