我在Laravel上迁移了一个像这样的表pasien:
public function up()
{
Schema::create('pasien', function (Blueprint $table) {
$table->string('No_RM');
$table->timestamps();
$table->primary('No_RM');
});
}
现在我想为No_RM创建一个外键,而不是id
public function up()
{
Schema::create('data_primary', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unique('RM_id');
$table->string('file_primary');
$table->timestamps();
$table->foreign('RM_id')->references('No_RM')->on('pasien');
});
}
仍然有错误
1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'unsigned not null,
file_primary
varchar(255)not null,created_at
timestamp'在第1行附近使用正确的语法
有人可以纠正我的错误吗?
只需添加另一个迁移来修改你的pasien
表
Schema::table('pasien', function (Blueprint $table) {
$table->unique('RM_id');
});
现在你可以在RM_id
,table中声明data_primary
作为外键,成为外键,它应该是唯一键。
如果您放弃了迁移,则可以创建新的表格
病人的桌子
public function up()
{
Schema::create('pasien', function (Blueprint $table) {
$table->increments('id');
$table->string('No_RM')->unique();
$table->timestamps();
});
}
和data_primary表
public function up()
{
Schema::create('data_primary', function (Blueprint $table) {
$table->increments('id');
$table->string('RM_id');
$table->string('file_primary');
$table->timestamps();
$table->foreign('RM_id')->references('RM_id')->on('pasien')
->onUpdate('cascade')->onDelete('cascade');
});
}
从概念上讲,你不能将外键引用到非主键,它打破了关系数据库的概念,你能为我提供ERD,也许我可以帮助重新设计你的数据库结构