首页 > 解决方案 > 未正确创建gorm中的外键和关联

问题描述

我试图在 PostgreSQL 上为它属于数据的人和数据属于人的人创建模型关联外键这是我的结构

type (
    Data struct {
        ID          uint `gorm:"auto_increment"`
        PersonID    uint
        Person      *Person `gorm:"foreignkey:id;association_foreignkey:PersonID"`
        Birthday    *time.Time
        Salary      float64 `gorm:"type:money"`
    }

    Person struct {
        gorm.Model
        Email    string `gorm:"type:varchar(100);unique_index;not null"`
        Password string `gorm:"type:varchar(100);not null"`
        Role     string `gorm:"type:varchar(30);not null"`
        DataID   uint
        Data     *Data `gorm:"foreignkey:id;association_foreignkey:DataID"`
    }
)

我想在数据表上必须Person_id是来自 Person 表的外键,并且Data_id在我在 DBeaver 上的 ER 图上看到之后,Person 表也必须是来自数据表的外键,这些不是我希望的那样创建的:( ER图上没有任何关系,我确定我的协会在上面错了,谁能给我一些信息来解决这个问题?

标签: postgresqlgogo-gormgo-gin

解决方案


当您自动迁移数据库时,您可以使用 gorm 的功能。

db.Model(&Data{}).AddForeignKey("person", "person(id)", "NO ACTION", "NO ACTION")
db.Model(&Person{}).AddForeignKey("data", "data(id)", "NO ACTION", "NO ACTION")

你也可以检查一下:Gorm Migration


推荐阅读