首页 文章

Laravel将外键添加到表中

提问于
浏览
0

我正在尝试将permission_id外键添加到我的users表中,该表将引用我的权限表中的id . 目前我 Build 了以下迁移:

<?php
class AddPermissionIdForeignKeyToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->unsignedInteger('permission_id')->after('id');
            $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('permission_id');
        });
    }
}

但我得到以下错误:

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(眼睛 . #sql-22f0_3dd,CONSTRAINT users_permission_id_foreign FOREIGN KEY(permission_id)REFERENCES参考文献(id)ON DELETE CASCADE)( SQL:alter table users添加约束users_permission_id_foreign外键(permission_id)引用删除级联上的权限(id))在PDOStatement.php第144行:SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(眼睛 . #sql-22f0_3dd,CONSTRAINT users_permission_id_foreign FOREIGN KEY(permission_id)REFERENCES p ermissions(id)ON DELETE CASCADE)在PDOStatement.php第142行:SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子项row:外键约束失败(眼睛 . #sql-22f0_3dd,CONSTRAINT users_permission_id_foreign FOREIGN KEY(permission_id)REFERENCES p ermissions(id)ON DELETE CASCADE)

1 回答

  • 0

    如果表中的用户已有数据,则需要将字段permission_id声明为可空 .

    $table->unsignedInteger('permission_id')->nullable()->after('id');

相关问题