如何在Laravel中将外键设置为可为空

时间:2018-01-29 15:40:59

标签: php mysql laravel

我在日志表中设置了user_id,现在有一个问题,我有时需要将日志存储到非登录用户执行的操作。

当我运行此迁移时

    Schema::table('users_log', function (Blueprint $table) {
        $table->unsignedInteger('user_id')->nullable()->change();
    });

我收到错误

  

[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误:   1832无法更改列'user_id':在外键约束中使用   'users_log_user_id_foreign'(SQL:ALTER TABLE users_log CHANGE user_id   user_id INT UNSIGNED DEFAULT NULL)

1 个答案:

答案 0 :(得分:4)

您需要首先删除FK约束:

$table->dropForeign(['user_id']);

然后修改列并添加新的FK约束。

另外,请确保您在单独的Schema::table()关闭中执行此操作。

https://laravel.com/docs/5.5/migrations#foreign-key-constraints