当我尝试使用更新语句将外键设置为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一起使用。