【问题标题】:How to append to the string array in gorm如何追加到gorm中的字符串数组
【发布时间】:2021-06-24 20:10:18
【问题描述】:

我正在尝试使用 gorm 添加数组数据类型

type Token struct {
  Base
  Tags pq.StringArray json:"tags"
}

使用

t.DB.Model(&database.Token{}).Where("address = ?", address).Update(&database.Token{Tags: ["1","2"],})

但是,我无法将新标签附加到数据中。快换了。。 有什么想法吗??

【问题讨论】:

  • 请检查答案。

标签: postgresql go go-gorm


【解决方案1】:

您的代码不会附加,它将Tags 字段替换为["1","2"]
为了将新标签附加到现有标签,您可以继续:

// 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】:

    mpromonet 是否声明您正在替换标签,但未附加到现有标签上。
    在这里您可以如何修改现有的 Update 语句以使其工作

    更新 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"})))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      相关资源
      最近更新 更多