我在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行'附近使用正确的语法
有人可以纠正我的错误吗?
答案 0 :(得分:1)
只需添加另一个迁移即可修改您的pasien
表,例如
Schema::table('pasien', function (Blueprint $table) {
$table->unique('RM_id');
});
现在,您可以在RM_id
表中将data_primary
声明为外键,要成为外键,它应该是唯一键。
如果您删除了迁移,则可以创建新表,您可以这样做
pasien表
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');
});
}
答案 1 :(得分:-1)
从概念上讲,您不能将外键引用为非主键,这打破了关系数据库的概念,能否为我提供ERD,也许我可以帮助您重新设计数据库结构