gorm中的外键和关联未正确创建

时间:2019-09-13 19:30:34

标签: postgresql go go-gorm gin

我尝试在PostgreSQL上为属于数据的人和属于数据的人建立模型Association ForeignKey 这是我的结构

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"`
    }
)

我想在ER Diagram上看到数据表之后,Person_id是来自Person表的外键,而且Person表也Data_id是来自数据表的外键在我的DBeaver上,这些不是按照我的意愿创建的:(这与ER图上没有任何关系,我确定我的上述协会有问题,有人可以给我一些信息来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

自动迁移数据库时,可以使用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