作为简单的背景,我有一个表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。
我需要做什么?
答案 0 :(得分:0)
我明白了。我需要在Select()
中专门包括该列:
db.Model(&foo).Select("bar_id").Updates(map[string]interface{}{"bar_id": nil})