如何在具有多个关联的情况下进行更新

3
我使用 GORM 中的 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)
1个回答

0
根据gorm关于has-many关系的文档(https://gorm.io/docs/has_many.html),自动关联需要是structnameID,所以在您的情况下是ProID(所有者结构体名为Pro而不是Project)。要么重命名结构体或引用,要么添加gorm:"foreignKey:ProjectID"作为标签:
type Pro struct {
    Model
    TaxRate []TaxRate `json:"taxRate" gorm:"foreignKey:ProjectID;constraint:OnUpdate:CASCADE;"`
}

谢谢您的回复。我已经解决了这个问题。当我更新Pro时,我忘记发送TaxRateID。我在gorm文档中找到了这个问题。如果没有发送TaxRateID,则会插入,否则会更新。 - silentCode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接