【问题标题】:How to update with a has many relationship如何更新有很多关系
【发布时间】:2021-08-16 08:51:00
【问题描述】:

我用的gorm with the has many。 这是我的模型

type Pro struct {
    Model
    TaxRate              []TaxRate  `json:"taxRate" gorm:"constraint:OnUpdate:CASCADE;"`
}
type TaxRate struct {
    ID        uint
    Tax       float64
    ProjectID uint
}

但是当我更新项目时,我发现 TaxRate 只是插入记录而不是更新。 这是我的更新操作

result:=pRepo.db.Session(&gorm.Session{FullSaveAssociations: true}).Updates(p)

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:

    根据关于有多对关系 (https://gorm.io/docs/has_many.html) 的 gorm 文档,自动关系需要为 structnameID,因此在您的情况下为 ProID(所有者结构称为 Pro 而不是 Project)。重命名结构或引用或添加gorm:"foreignKey:ProjectID" 作为标签:

    type Pro struct {
        Model
        TaxRate []TaxRate `json:"taxRate" gorm:"foreignKey:ProjectID;constraint:OnUpdate:CASCADE;"`
    }
    

    【讨论】:

    • 感谢您的回复。我已经解决了这个问题。当我更新 Pro 时,我忘记发送 TaxRateID。我在gorm doc中找到了。如果 TaxRateID 没有发送,它将插入,否则更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2019-02-01
    • 2014-07-10
    相关资源
    最近更新 更多