【问题标题】:required constraints to have foreign key which references to unique key in has-many relationship in gorm需要约束以具有外键,该外键引用 gorm 中的 has-many 关系中的唯一键
【发布时间】:2021-08-01 20:15:39
【问题描述】:

如何让外键引用唯一键而不是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"`
}​​​​​​​​

【问题讨论】:

    标签: go foreign-keys has-many go-gorm unique-key


    【解决方案1】:

    此处的 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
    }
    

    【讨论】:

    • 我是否需要为此提供特定的 gorm 版本?因为我已经访问了上述链接并尝试了不同的选项。但它对我没有用。
    • 添加数据时,我只是添加 err := db.Create(&moduleData).Error ,是否应该将其替换为 err := db.Create(&module).Association("DimensionOrderData")。错误?
    • 我没有收到任何错误,但我的依赖表数据没有添加到 postgres 表中。
    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2021-02-10
    • 2011-03-30
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多