gorm 字段为空值时不更新
gorm update用struct 类型更新的时候如果传入空值,会默认跳过
当status == 0 是gorm 不会更新status的值
func UpdateUserStatus(userId interface{}, status int) User {
userInfo, _ := GetUserByUserId(userId)
db.Model(&userInfo).Update(User{Status:status})
return userInfo
}
gorm update文档有说明
如果用struct ,gorm 不会更新“零值”
// Update update attributes with callbacks, refer: https://jinzhu.github.io/gorm/crud.html#update
// WARNING when update with struct, GORM will not update fields that with zero value
func (s *DB) Update(attrs ...interface{}) *DB {
return s.Updates(toSearchableMap(attrs...), true)
}
更改为map更新
func UpdateUserStatus(userId interface{}, status int) User {
log.Println("_______-----------用户信息修改--------------",userId,status)
userInfo, _ := GetUserByUserId(userId)
db.Model(&userInfo).Update(map[string]interface{}{
"status":status,
})
return userInfo
}
这是一个小坑~~~~