我想在laravel中的sql数据库中的表中添加一个外键。但添加后我得到以下错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `userroles` add constraint userroles_user_id_foreign foreign key (`user_id`) references `users` (`user_id`))
我要添加此密钥的表是:
public function up()
{
Schema::create('userroles', function(Blueprint $table)
{
$table->increments('id');
$table->string('user_id');
$table->foreign('user_id')->references('user_id')->on('users');
$table->string('role_id');
$table->timestamps();
});
}
我所指的表格:
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('user_id');
$table->string('name');
$table->smallInteger('is_responder')->default(0);
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
名称和类型相同。还有什么可以得到错误?
更新 users表中的字段“user_id”将是专门为每个用户创建的GUID。这是我想在其他表中引用的字段。这可能吗?那么,据我所知,我需要将此字段设为PK吗?
答案 0 :(得分:3)
您可以为id
表的users
列创建外键。
而不是:
$table->string('user_id');
$table->foreign('user_id')->references('user_id')->on('users');
使用:
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');