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})
參考官方文檔
