相关文章推荐
体贴的路灯  ·  dayjs怎么处理UTC时间格式_51CTO ...·  2 年前    · 
自信的小狗  ·  MySQL -单表查询 - 听雨危楼 - 博客园·  2 年前    · 
挂过科的太阳  ·  Azure Storage ...·  2 年前    · 
聪明的海龟  ·  Python从菜鸟到高手(10):循环 - 知乎·  2 年前    · 
Code  ›  Gorm:如何将整型列设置为null,并在内存中更新模型?开发者社区
https://cloud.tencent.com/developer/ask/sof/561632
老实的葫芦
2 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 Gorm:如何将整型列设置为null,并在内存中更新模型?
Stack Overflow用户
提问于 2019-02-15 04:15:17
EN

作为一个简单的背景,我有一个表 foo ,它有一个可以为空的int外键 bar_id 。我有一个函数可以从 foo 中删除 bar 关联,也就是将它设置为 NULL 。

我已经尝试了所有方法:我尝试使用 sql.NullInt64 作为列类型,然后

foo.BarId.Valid = false // even set Int64 = 0 for good measure
db.Save(&foo) // with LogMode(true)

在UPDATE语句中未更新 bar_id

我试过了:

db.Raw("UPDATE foo SET bar_id = NULL WHERE id = ?", foo.ID).Row().Scan(&foo)

谢天谢地,SQL是正确的,但是对象没有更新。我认为我的gorm版本也没有 Error 。

我尝试将Foo.BarId的类型更改为 *int64 ,并将指针设置为 nil ,但输出查询没有将 bar_id 更改为NULL。

我该怎么办?

3 5.6K 0 票数 2
EN
go
go-gorm

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-15 05:19:41

这样啊,原来是这么回事。我需要明确地在 Select() 中包含该列

db.Model(&foo).Select("bar_id").Updates(map[string]interface{}{"bar_id": nil})
票数 1
EN

Stack Overflow用户

发布于 2021-08-25 08:52:49

另一种方法:

//RemoveAllChildren  remove all the children
 func RemoveAllChildren(db *gorm.DB, dataEdit Mat) (Mat, error) {
     var matupdate Mat
 
推荐文章
体贴的路灯  ·  dayjs怎么处理UTC时间格式_51CTO博客_js utc时间
2 年前
自信的小狗  ·  MySQL -单表查询 - 听雨危楼 - 博客园
2 年前
挂过科的太阳  ·  Azure Storage encryption for data at rest | Microsoft Learn
2 年前
聪明的海龟  ·  Python从菜鸟到高手(10):循环 - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号