Gorm: Как мне установить для целочисленного столбца значение null и обновить модель в памяти? - PullRequest
0 голосов
/ 14 февраля 2019

В качестве простого фона у меня есть таблица foo, с внешним значением nullable 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 голосов
/ 15 февраля 2019

Я понял.Мне нужно специально включить столбец в Select():

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