【问题标题】:Laravel add foreign key to a tableLaravel 向表中添加外键
【发布时间】:2019-01-11 04:40:42
【问题描述】:

我正在尝试向我的用户表中添加一个 permission_id 外键,该表将引用我的权限表中的 id。目前我构建了以下迁移:

<?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 无法添加或 更新子行:外键约束失败 (eyes.#sql-22f0_3dd, 约束users_permission_id_foreign 外键 (permission_id) 引用 p ermissions (id) 开 DELETE CASCADE) (SQL: alter table users 添加约束 users_permission_id_foreign 外键 (permission_id) 引用 permissions (id) 删除级联)

在 PDOStatement.php 第 144 行:

SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (eyes.#sql-22f0_3dd,约束users_permission_id_foreign 外键 (permission_id) 引用 p ermissions (id) 开 删除级联)

在 PDOStatement.php 第 142 行:

SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (eyes.#sql-22f0_3dd, 约束users_permission_id_foreign 外键 (permission_id) 引用 p ermissions (id) 开 删除级联)

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

    如果您的表 users 中已有数据,则需要将字段 permission_id 声明为可为空。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多