问题
  当使用零值进行查询时,零值并没有作为查询条件进行查询
   更新时也有这样的问题,零值不更新
  
 如:
db.Where(&User{Name: "jinzhu", Age: 0}).Find(&users)
 
执行的sql语句是
SELECT * FROM "user" WHERE "Name" = "jinzhu"
 
而不是
SELECT * FROM "user" WHERE "Name" = "jinzhu" AND "Age" = 0
 
原因
  当使用结构作为条件查询时,GORM 只会查询非零值字段,更新也是如此。
  
解决方案
查询:
使用 map 来构建查询条件
db.Where(map[string]interface{}{"Name": "jinzhu", "Age": 0}).Find(&users)
 
更新:
  使用 map 来构建更新条件,而不是结构体user{}
  或者,使用 Save 保存所有的字段,即使字段是零值
db.Model(&user).Where("Name", "jinzhu").Updates(map[string]interface{}{"Age": 0})
//或
user.Name = "shuai"
user.Age = 0
db.Save(&user)
 
参考自:https://www.kancloud.cn/sliver_horn/gorm
如有不对,烦请指出~










