beego 如何实现orm更新部分字段
使用beego的orm更新单条数据库记录,如果只传入单个参数会将其他没传入的字段置空,文档上说可指定更新字段( http://beego.me/docs/mvc/model/object.md )
// 只更新 Name
o.Update(&user, "Name")
// 指定多个字段
// o.Update(&user, "Field1", "Field2", ...)
现在的问题是:如何获取到更新的字段 field1,field2
controller中通过 c.Ctx.Request.Body 获取的body是
{
"aa": "234234",
"bb": "sdfg",
"cc": "23423",
"dd": "sss"
}
如何提取出 aa ,bb,dd ……( 不确定列数 )然后将提取的数组作为更新的特定字段
F@ukTDN
10 years, 4 months ago
Answers
大哥,请认真阅读官方文档好不,这种问题真心就不应该拿来问,官方文档对于这种问题已经说得很明白了:
第一个返回值为影响的行数
go
o := orm.NewOrm() user := User{Id: 1} if o.Read(&user) == nil { user.Name = "MyName" if num, err := o.Update(&user); err == nil { fmt.Println(num) } }
Update 默认更新所有的字段,可以更新指定的字段:
go
// 只更新 Name o.Update(&user, "Name") // 指定多个字段 // o.Update(&user, "Field1", "Field2", ...) ...
认真看
o.Update
的第一个参数,那是一个
指针
,意思是你直接把值赋值给
user
变量,等于是临时修改了
user
变量的属于值,然后把这个
user
变量的指针直接传递给
o.Update
参数,
orm
会直接找到
user
对应的记录,更新
o.Update
后面的几个参数指定的字段。也就是你直接在
o.Update
之前,直接:
go
user.xxx = aa user.ooo = bb user.ppp = cc
之后直接调用
o.Update
方法即可。
B力ZERO
answered 10 years, 4 months ago