beego 如何实现orm更新部分字段

发布于 2022-09-01 06:43:20 字数 514 浏览 20 评论 0

使用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 ……(不确定列数)然后将提取的数组作为更新的特定字段

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷情妓 2022-09-08 06:43:20

大哥,请认真阅读官方文档好不,这种问题真心就不应该拿来问,官方文档对于这种问题已经说得很明白了:

第一个返回值为影响的行数

goo := 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 之前,直接:

gouser.xxx = aa
user.ooo = bb
user.ppp = cc

之后直接调用 o.Update 方法即可。

地址:http://beego.me/docs/mvc/model/object.md#update

行至春深 2022-09-08 06:43:20

更新指定字段和更新非空字段一样吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文