我想在laravel中迁移acl迁移,但出现此错误
错误
150“外键约束格式不正确”
表
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->Increments('id');
$table->string('title_fa');
$table->string('title_en');
$table->timestamps();
});
Schema::create('permissions', function (Blueprint $table) {
$table->Increments('id');
$table->string('title_fa');
$table->string('title_en');
$table->timestamps();
});
Schema::create('role_user', function (Blueprint $table) {
$table->integer('role_id');
$table->integer('user_id');
$table->foreign('role_id')
->references('id')
->on('roles')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onUpdate('cascade')
->onDelete('cascade');
});
Schema::create('permission_role', function (Blueprint $table) {
$table->integer('permission_id');
$table->integer('role_id');
$table->foreign('permission_id')
->references('id')
->on('permissions')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onUpdate('cascade')
->onDelete('cascade');
});
}
我尝试取消角色ID和用户id
的Inteager签名,然后尝试:
$table->primary(['role_id','user_id']);
但这不适合我
答案 0 :(得分:0)
您想像这样将整数更改为unsigned biginteger:
public function up() {
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title_fa');
$table->string('title_en');
$table->timestamps();
});
Schema::create('permissions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title_fa');
$table->string('title_en');
$table->timestamps();
});
Schema::create('role_user', function (Blueprint $table) {
$table->unsignedBigInteger('role_id');
$table->unsignedBigInteger('user_id');
$table->foreign('role_id')
->references('id')
->on('roles')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onUpdate('cascade')
->onDelete('cascade');
});
Schema::create('permission_role', function (Blueprint $table) {
$table->unsignedBigInteger('permission_id');
$table->unsignedBigInteger('role_id');
$table->foreign('permission_id')
->references('id')
->on('permissions')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onUpdate('cascade')
->onDelete('cascade');
});
}