php 如何向现有表添加外键

z18hc3ub  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(126)

你好,我正在使用Laravel 10,想给一个已经存在的表添加外键

public function up(): void
    {
        Schema::disableForeignKeyConstraints();

        Schema::table('channels', function (Blueprint $table) {
            $table->foreignIdFor(App\Models\User::class)
            ->after('name')
            ->constrained();
        });

        Schema::enableForeignKeyConstraints();
    }

    public function down(): void
    {
        Schema::table('channels', function (Blueprint $table) {
            $table->dropForeign(['user_id']);
            $table->dropColumn('user_id');
        });
    }

我使用命令Schema::disableForeignKeyConstraints()禁用了外键验证,但仍然得到一个错误。
SQLSTATE[HY000]:一般错误:1无法添加具有默认值NULL的NOT NULL列(连接:sqlite,SQL:alter table“channels”add column“user_id”integer not null)
请告诉我怎么修

cetgtptt

cetgtptt1#

问题是,你想创建一个外键,它转换为一个alter,它会添加/修改一个列,使其不可为空,但默认值为null。
您可以显式地声明一个非空默认值,如

->default(0)

或将列设置为可空

->nullable()

相关问题