Laravel 向表中添加外键
Posted
技术标签:
【中文标题】Laravel 向表中添加外键【英文标题】:Laravel add foreign key to a table 【发布时间】: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 tableusers
添加约束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
) 开 删除级联)
【问题讨论】:
【参考方案1】:如果您的表 users 中已有数据,则需要将字段 permission_id 声明为可为空。
$table->unsignedInteger('permission_id')->nullable()->after('id');
【讨论】:
以上是关于Laravel 向表中添加外键的主要内容,如果未能解决你的问题,请参考以下文章