为安全性保证、防止误操作, Update
及 Delete
方 法必须带有 Where
条件才能提交执行,否则将会错误返回,错误信息如: there should be WHERE condition statement for XXX operation
。 goframe
是一款用于企业生产级别的框架,各个模块设计严谨,工程实践的细节处理得比较好。
Update
更新方法
Update
用于数据的更新,往往需要结合 Data
及 Where
方法共同使用。 Data
方法用于指定需要更新的数据, Where
方法用于指定更新的条件范围。同时, Update
方法也支持直接给定数据和条件参数。
使用示例:
// UPDATE `user` SET `name`='john guo' WHERE name='john'
g.Model("user").Data(g.Map{"name" : "john guo"}).Where("name", "john").Update()
g.Model("user").Data("name='john guo'").Where("name", "john").Update()
// UPDATE `user` SET `status`=1 ORDER BY `login_time` asc LIMIT 10
g.Model("user").Data("status", 1).Order("login_time asc").Limit(10).Update()
// UPDATE `user` SET `status`=1 WHERE 1
g.Model("user").Data("status=1").Where(1).Update()
g.Model("user").Data("status", 1).Where(1).Update()
g.Model("user").Data(g.Map{"status" : 1}).Where(1).Update()
也可以直接给 Update
方法传递 data
及 where
参数:
// UPDATE `user` SET `name`='john guo' WHERE name='john'
g.Model("user").Update(g.Map{"name" : "john guo"}, "name", "john")
g.Model("user").Update("name='john guo'", "name", "john")
// UPDATE `user` SET `status`=1 WHERE 1
g.Model("user").Update("status=1", 1)
g.Model("user").Update(g.Map{"status" : 1}, 1)
Counter
更新特性
可以使用 Counter
类型参数对特定的字段进行数值操作,例如:增加、减少操作。
Counter
数据结构定义:
// Counter is the type for update count.
type Counter struct {
Field string
Value float64
}
Counter
使用示例,字段自增:
updateData := g.Map{
"views": &gdb.Counter{
Field: "views",
Value: 1,
},
}
// UPDATE `article` SET `views`=`views`+1 WHERE `id`=1
result, err := db.Update("article", updateData, "id", 1)
Counter
也可以实现非自身字段的自增,例如:
updateData := g.Map{
"views": &gdb.Counter{
Field: "clicks",
Value: 1,
},
}
// UPDATE `article` SET `views`=`clicks`+1 WHERE `id`=1
result, err := db.Update("article", updateData, "id", 1)