Я создал две миграции с генераторами Jeffrey Way для Laravel 5. А именно: php artisan make:migrate:schema create_roles_table --schema='name:string, description:text'
и php artisan make:migrate:pivot user role
.Laravel 5.2 ошибки внешнего ключа
Теперь моя база данных MySQL по умолчанию равна InnoDB
, которую я прочитал. Я также переместил настройку внешнего ключа в Schema::table()
вместо Schema::create('role_user')
. В моих миграциях не должно быть ничего плохого, но они ошибаются: General error: 1215 Cannot add foreign key constraint (SQL: alter table role_user add constraint role_user_user_id_foreign foreign key (user_id) references user (id) on delete cascade)
.
Schema::create('role_user', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->integer('role_id')->unsigned()->index();
$table->integer('user_id')->unsigned()->index();
$table->primary(['role_id', 'user_id']);
});
Schema::table('role_user', function(Blueprint $table){
$table->foreign('user_id')->references('id')->on('user')->onDelete('cascade');
$table->foreign('role_id')->references('id')->on('role')->onDelete('cascade');
});
я назвал в каждой миграции $table->engine = 'InnoDB';
. Также я установил все столбцы id
в unsigned
, хотя они уже были такими. Я не знаю, кто мне помогает.
Порядок, похоже, прав: - Пользователи - Роли - Role_User сводных таблиц - внешние ключи. Я также уронил все столы и заново прогнал все миграции. – jbehrens94