在使用GORM(Go语言的ORM库)进行数据库操作时,UpdatedAt
字段通常会被自动更新为当前时间戳。如果你希望在调用Updates()
方法时保留UpdatedAt
字段的原有值,可以采取以下几种方法:
你可以使用Select
方法指定要更新的字段,或者使用Omit
方法排除不需要更新的字段。例如:
// 使用Select指定要更新的字段
db.Model(&user).Select("Field1", "Field2").Updates(map[string]interface{}{"Field1": value1, "Field2": value2})
// 使用Omit排除不需要更新的字段
db.Model(&user).Omit("UpdatedAt").Updates(map[string]interface{}{"Field1": value1, "Field2": value2})
在调用Updates()
方法之前,你可以手动设置UpdatedAt
字段的值。例如:
// 手动设置UpdatedAt字段的值
user.UpdatedAt = time.Now().Add(-1 * time.Hour) // 设置为当前时间一小时前的值
db.Save(&user)
如果你希望完全禁用UpdatedAt
字段的自动更新,可以在定义模型时设置gorm:"autoUpdateTime"
标签。例如:
type User struct {
ID uint `gorm:"primaryKey"`
Field1 string
Field2 string
UpdatedAt time.Time `gorm:"autoUpdateTime:false"`
}
通过以上方法,你可以有效地防止GORM在调用Updates()
方法时忽略UpdatedAt
字段的值。选择哪种方法取决于你的具体需求和应用场景。
领取专属 10元无门槛券
手把手带您无忧上云