迁移:不能在laravel中添加外键约束 [英] Migration: Cannot add foreign key constraint in laravel
问题描述
我正在尝试在Laravel中创建外键,但是当我使用 artisan
迁移我的表格时,我抛出以下错误:
I'm trying to create foreign keys in Laravel however when I migrate my table using artisan
i am thrown the following error:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL
: alter table `priorities` add constraint priorities_user_id_foreign foreign
key (`user_id`) references `users` (`id`))
我的迁移代码是这样的:
My migration code is as so:
优先级迁移文件
public function up()
{
//
Schema::create('priorities', function($table) {
$table->increments('id', true);
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->string('priority_name');
$table->smallInteger('rank');
$table->text('class');
$table->timestamps('timecreated');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('priorities');
}
用户迁移文件
public function up()
{
//
Schema::table('users', function($table)
{
$table->create();
$table->increments('id');
$table->string('email');
$table->string('first_name');
$table->string('password');
$table->string('email_code');
$table->string('time_created');
$table->string('ip');
$table->string('confirmed');
$table->string('user_role');
$table->string('salt');
$table->string('last_login');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schemea::drop('users');
}
任何关于我做错了什么的想法,我想得到这个现在,因为我有很多表,我需要创建eg用户,客户,项目,任务,状态,优先级,类型,团队。理想情况下,我想创建使用外键保存此数据的表,i..e clients_project
和 project_tasks
等。
Any ideas as to what I've done wrong, I want to get this right now, as I've got a lot of tables I need to create e.g. Users, Clients, Projects, Tasks, Statuses, Priorities, Types, Teams. Ideally I want to create tables which hold this data with the foreign keys, i..e clients_project
and project_tasks
etc.
希望有人可以帮助我开始。
Hope someone can help me to get started.
提前感谢。
推荐答案
将其分为两个步骤,这样做很好:
Add it in two steps, and it's good to make it unsigned too:
public function up()
{
Schema::create('priorities', function($table) {
$table->increments('id', true);
$table->integer('user_id')->unsigned();
$table->string('priority_name');
$table->smallInteger('rank');
$table->text('class');
$table->timestamps('timecreated');
});
Schema::table('priorities', function($table) {
$table->foreign('user_id')->references('id')->on('users');
});
}
这篇关于迁移:不能在laravel中添加外键约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!