首页 > 解决方案 > 需要约束以具有外键,该外键引用 gorm 中的 has-many 关系中的唯一键

问题描述

如何让外键引用唯一键而不是gorm中的主键?我在下面有很多关系的数据结构。具有以下约束,我可以在 db 中添加 ModuleData,但我无法添加 DimensionOrderData。但是,如果我有引用主键的外键,那么它可以工作。我是否需要添加更多约束才能使其正常工作?

typeDimensionOrderDatastruct {​​​​​​​​
    ModuleID       int64`gorm:"primary_key;column:module_internal_id"`
    DimensionID    int64`gorm:"primary_key;column:dimension_id"`
    SequenceNumber int`gorm:"column:sequencenumber_cnt"`
}​​​​​​​​


// ModuleData : Module data

typeModuleDatastruct {​​​​​​​​
    ID             string`gorm:"primary_key;type:uuid;column:module_id"`
    InternalID     int64`gorm:"unique;column:internal_id"`
    Name           *string`gorm:"column:name_nm"`
    Reference      *string`gorm:"column:reference_txt"`
    DimensionOrder []DimensionOrderData `gorm:"foreignkey;column:module_internal_id;references:internal_id"`
}​​​​​​​​

标签: goforeign-keyshas-manygo-gormunique-key

解决方案


此处的 Gorm 文档https://gorm.io/docs/has_many.html,指定您可以按如下方式覆盖外键

type User struct {
  gorm.Model
  CreditCards []CreditCard `gorm:"foreignKey:UserRefer"`
}

type CreditCard struct {
  gorm.Model
  Number    string
  UserRefer uint
}

推荐阅读