1

我尝试按照文档中关于外键的说明:

https://laravel.com/docs/9.x/migrations#foreign-key-constraints

我有 3 个表需要相互连接:

角色:

1

用户:

2

角色用户:

3

我有一些问题,role_user这是错误:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`usersexam`.`role_user`, CONSTRAINT `role_user_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE)

这是它的迁移:(试图遵循 laravel docs 语法)

public function up()
{
    Schema::create('role_user', function (Blueprint $table) {
        $table->foreignId('user_id')->constrained()->cascadeOnDelete();
        $table->foreignId('role_id')->constrained()->cascadeOnDelete();
    });
}

那么这是我的插入查询:

4

在这个过程中我做错了什么?任何帮助,将不胜感激。

4

2 回答 2

1

在向表中插入任何内容之前,您必须将数据插入roles到表中usersrole_user

于 2022-02-17T02:44:52.847 回答
0

您正在尝试在父表中不存在的数据透视表中添加一个 id。确保您插入外键的值存在于父表中。

您收到此错误是因为您尝试根据当前存储在表中的值向role_user表中插入一个没有有效值的字段的行。role_idroles

所以你需要做的是首先将数据插入到表rolesusers表中。

于 2022-02-17T03:17:18.397 回答