Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中将外键设置为nullable_Php_Mysql_Laravel - Fatal编程技术网

Php 如何在Laravel中将外键设置为nullable

Php 如何在Laravel中将外键设置为nullable,php,mysql,laravel,Php,Mysql,Laravel,我在日志表中设置了一个用户id,现在有一个问题,我有时需要将日志存储到非日志用户执行的操作中 当我运行此迁移时 Schema::table('users_log', function (Blueprint $table) { $table->unsignedInteger('user_id')->nullable()->change(); }); 我犯了一个错误 [Illumb\Database\QueryException]SQLSTATE[

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

当我运行此迁移时

    Schema::table('users_log', function (Blueprint $table) {
        $table->unsignedInteger('user_id')->nullable()->change();
    });
我犯了一个错误

[Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误: 1832无法更改列“user_id”:在外键约束中使用 “users\u log\u user\u id\u foreign”(SQL:ALTER TABLE users\u log CHANGE user\u id 用户\u id INT无符号默认值(空)


您需要先删除FK约束:

$table->dropForeign(['user_id']);
然后修改柱并添加新的FK约束

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


您有一个外键约束,该约束不允许用户id中有空值。删除该约束,您应该会没事的。@naneri到底是什么不起作用?你是不是出了什么差错?您是否尝试过在一个
Schema::table()
闭包中删除FK,在另一个中修改列,并在另一个中添加另一个FK?我将尝试在不同的闭包中设置它们后,它是否起作用。非常感谢。请您在回答中注意外键约束删除应该在不同的闭包中。@naneri当然可以。添加。)