gpt4 book ai didi

go - nil不会将数据库记录设置为NULL

转载 作者:行者123 更新时间:2023-12-01 22:11:23 24 4
gpt4 key购买 nike

我正在使用gorm,但我有一个可为空的列gender,可以将其设置为malefemale,但是一旦将该列设置为NULLnil的值,就无法使用male将其设置回female
以下是我的代码。为简化起见,我只包含与我的问题相关的字段

type User struct {
gorm.Model

Username string `gorm:"type:varchar(40);unique" json:"username"`
NickName string `gorm:"type:varchar(32)" json:"nickname"`
Gender *string `gorm:"type:enum('male', 'female');default:null" json:"gender"`
}
然后将性别更新为男性:
db.Model(&User{}).Where(&User{
Model: gorm.Model{ID: 1},
}).Update(
&User{
Gender: utils.GetStringPtr("female"),
NickName: "nick name",
},
)
然后我尝试将性别更新为NULL
db.Model(&User{}).Where(&User{
Model: gorm.Model{ID: 1},
}).Update(
&User{
Gender: nil,
NickName: "nick name",
},
)
但是,性别保持不变 female,并且是 而不是更改为 NULL
有什么想法我可以解决这个问题吗?

最佳答案

您必须使用 null package
例如 :

type User struct {
gorm.Model

Username string `gorm:"type:varchar(40);unique" json:"username"`
NickName string `gorm:"type:varchar(32)" json:"nickname"`
Gender null.String `gorm:"type:enum('male', 'female');default:null" json:"gender"`
}
然后将set元素设置为null,您必须这样做:
gender := null.StringFromPtr(nil)
从您的代码,您必须执行以下操作:
db.Model(&User{}).Where(&User{
Model: gorm.Model{ID: 1},
}).Update(
&User{
Gender: null.StringFromPtr(nil),
NickName: "nick name",
},
)

关于go - nil不会将数据库记录设置为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63433667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com