gpt4 book ai didi

laravel - Laravel 迁移中的多对多

转载 作者:行者123 更新时间:2023-12-02 16:45:00 25 4
gpt4 key购买 nike

我有 3 张 table 可以相互连接。表名称的角色、role_user 和 users。我想在 Laravel 上进行迁移并添加一些约束。这是我的角色表迁移中的内容:

    Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description');
$table->timestamps();
});

这是我的用户表迁移:

Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username')->unique();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->boolean('active')->default(0);
$table->softDeletes();
$table->rememberToken();
$table->timestamps();
});

这是我的 role_user 表迁移:

    Schema::create('role_user', function (Blueprint $table) {
$table->integer('role_id')->unsigned();
$table->integer('user_id')->unsigned();

$table->unique(['role_id', 'user_id']);
$table->foreign('role_id')->references('id')->on('roles')
->onDelete('cascade')->onUpdate('cascade');
$table->foreign('user_id')->references('id')->on('users')
->onDelete('cascade')->onUpdate('cascade');
});

在我的迁移订单中,我已经将角色表放在用户之上,但我遇到了此类错误:

  [Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `role_user` add constraint `role_user_role_id_foreign` foreign key (`role_id
`) references `roles` (`id`) on delete cascade on update cascade)



[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

最佳答案

您的问题可能在于迁移的创建顺序。

Laravel 使用文件名中的时间戳按创建顺序运行迁移,因此,如果您按以下顺序创建它们:

  1. 2018_06_02_023539_create_roles_table中的角色
  2. 2018_06_02_023800_create_role_user_table中的role_user
  3. 2018_06_02_023815_create_users_table中的用户

在表 role_user 中引用时,表 users 将不存在,从而导致 SQL 错误。您可以执行的最简单的修复方法是按以下方式重命名 role_user 迁移文件:

2018_06_02_023800_create_role_user_table => 2018_06_02_023820_create_role_user_table

关于laravel - Laravel 迁移中的多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com