通过其 pq 查询 GORM 数据库.字符串数组属性



我有以下戈姆。模型和我想查询我的 Postgres 数据库以返回在其 .类别属性,但我不知道如何在 pq 内查询。字符串数组。有解决方法吗?

type Confession struct {
gorm.Model
User       string         `json:"User"`
Title      string         `json:"Title"`
Body       string         `json:"Body"`
Mood       string         `json:"Mood"`
Categories pq.StringArray `gorm:"type:varchar(64)[]" json:"Categories"`
}

这是我尝试查询的方式,但使用 LIKE 运算符会抛出错误。

if categories != nil {
for _, cat := range categories {
tx = tx.Where("Categories LIKE ?", "%"+cat+"%")
}
}

对数组包含使用<@。您可以使用*sql.DB函数进行查询Query并使用 gorm 中的tx.DB()获取*sql.DB

sel := "SELECT * FROM confessions WHERE $1 <@ categories"
categories := []string{"cat1", "cat2"}
rows, err := tx.DB().Query(sel, pq.Array(categories))

或者尝试 Gorm Raw SQL ,但我不确定它是否适用于数组函数。

引用:

  • PostgreSQL 数组函数在这里
  • ProtgreSQL Array 在 golang 中的使用
  • 这里

解决我问题的最简单方法是使用 .其中命令是这样的

tx = tx.Where("categories && ?", pq.Array(categories))

这将返回一个戈姆。数据库,这样我就可以继续链接操作。&&运算符用于检查重叠元素。

相关内容

  • 没有找到相关文章

最新更新