英文:
How to append to the string array in gorm
问题
我正在尝试使用gorm添加数组数据类型。
type Token struct {
Base
Tags pq.StringArray `json:"tags" gorm:"type:text[]"`
}
使用以下代码:
t.DB.Model(&database.Token{}).Where("address = ?", address).Update(&database.Token{Tags: []string{"1", "2"}})
但是,我无法将新标签追加到数据中,它会被替换掉。有什么想法吗?
英文:
I am trying to add array data type using gorm
type Token struct {
Base
Tags pq.StringArray json:"tags"
}
using
t.DB.Model(&database.Token{}).Where("address = ?", address).Update(&database.Token{Tags: ["1","2"],})
But, I am unable to append a new tag to the data. It is getting replaced..
Any idea??
答案1
得分: 1
你的代码没有追加,而是用["1","2"]
替换了Tags
字段。
为了将新标签追加到现有标签中,你可以按照以下步骤进行:
// 读取行
t.DB.Model(&database.Token).Where("address = ?", address)
// 追加新标签
newTags := append(database.Token.Tags, "1", "2")
// 更新数据库
t.DB.Model(&database.Token).Update("tags", newTags)
英文:
Your code doesnot append, it replace the Tags
field with ["1","2"]
.
In order to append new tags to existing one, you may proceed like :
// read row
t.DB.Model(&database.Token).Where("address = ?", address)
// append new tags
newTags := append(database.Token.Tags, "1", "2")
// update database
t.DB.Model(&database.Token).Update("tags", newTags)
答案2
得分: 1
mpromonet
是否表示您正在替换标签而不是在现有标签上追加。以下是您可以修改现有更新语句使其正常工作的方法:
更新Token结构定义
Tags pq.StringArray `gorm:"type:text[]" json:"tags"`
使用array_cat
函数
t.DB.Model(&database.Token{})
.Where("address = ?", address)
.Update("tags", gorm.Expr("array_cat(tags, ?)", pq.Array([]string{"3","4"})))
使用||
运算符
t.DB.Model(&database.Token{})
.Where("address = ?", address)
.Update("tags", gorm.Expr("tags || ?", pq.Array([]string{"3","4"})))
希望对您有所帮助!
英文:
Has mpromonet
stated that you are replacing tag but not appending on the existing tags.
Here how you can modify your existing Update statement to make it work
Update Token struct definition
Tags pq.StringArray `gorm:"type:text[]" json:"tags"`
With array_cat
function
t.DB.Model(&database.Token{})
.Where("address = ?", address)
.Update("tags", gorm.Expr("array_cat(tags, ?)", pq.Array([]string{"3","4"})))
With ||
operator
t.DB.Model(&database.Token{})
.Where("address = ?", address)
.Update("tags", gorm.Expr("tags || ?", pq.Array([]string{"3","4"})))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论