gorm中使用Updates更新非空的字段
结构体model/Role
//通过迁移migrate生成的数据库表 -字段 限制
type Role struct {
Id int
Title string `json:"title" gorm:"type:varchar(255);"`
Description string `json:"description" gorm:"type:varchar(255);"`
Status int `json:"status" gorm:"type:tinyint;"`
CreatedAt Time
UpdatedAt Time
DeletedAt Time
}
err = common.DB.Model(&role).Updates(model.Role{
Title:requestRole.Title,
Description:requestRole.Description,
}).Error
if err != nil {
c.JSON(200, gin.H{
"data": gin.H{
"err": err,
},
"meta": gin.H{
"msg": "更新文章失败",
"status": 400,
},
})
}
// 警告: 当使用结构体更新的时候, GORM 只会更新那些非空的字段
// 例如下面的更新,没有东西会被更新,因为像 "", 0, false 是这些字段类型的空值
db.Model(&user).Updates(User{Name: "", Age: 0, Actived: false})
参考官方文档