Gorm:如何将整数列设置为null,并更新内存中的模型?

时间:2019-02-14 20:15:17

标签: go go-gorm

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

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

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

bar_id在UPDATE语句中未更新

我尝试过:

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。

我需要做什么?

1 个答案:

答案 0 :(得分:0)

我明白了。我需要在Select()中专门包括该列:

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