1 回答

TA贡献1798条经验 获得超3个赞
要更新现有数据,您可以获取第一个预加载子
var country Country
db.Preload("Regions").Preload("Regions.Cities").First(&country, 1)
然后您可以更新数据并添加新数据,例如
country.Regions[0].Cities[0].Name = "Dhaka City 1"
country.Regions[0].Name = "Dhaka Region 1"
country.Regions[1].Cities = append(country.Regions[1].Cities, City{Name: "Dhaka City 2"})
现在将更新的数据保存在数据库中
db.Save(&country)
如果您只想添加新的子数据,您也可以避免 Preload。
db.First(&country, 8)
country.Regions = append(country.Regions, Region{Name: "Dhaka Region 3"})
db.Save(&country)
默认情况下,gormassociation_autoupdate标志设置为true,因此它是自动保存关联。
err = db.Debug().Model(&country).Association("Regions").Replace(country.Regions).Error
Replace 仅将关联方式替换为其他。如果您不提供任何信息,它只会删除与Country此处的当前关联。只是Regions它不是儿童城市。
Gorm 不支持更新时的任何删除操作。它仅用于添加或更新现有数据。Gorm 模型默认使用软删除。如果您以这种方式删除区域,它将更新deleted_at字段数据。并且在查询时它总是过滤掉已删除的数据。
db.Delete(county.Regions)
而且它不会软删除 City,你必须这样做。
db.Delete(region.Cities)
这里有一个工作代码示例
- 1 回答
- 0 关注
- 282 浏览
添加回答
举报