为了账号安全,请及时绑定邮箱和手机立即绑定

通过其 pq.StringArray 属性查询 GORM 数据库

通过其 pq.StringArray 属性查询 GORM 数据库

Go
largeQ 2022-06-06 15:55:29
我有以下 gorm.Model,我想查询我的 Postgres 数据库以返回在其 .Categories 属性中具有特定类别的 Confessions,但我不知道如何在 pq.StringArray 中查询。有解决办法吗?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+"%")        }    }
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

用于<@数组包含。您可以使用Query函数查询*sql.DB并在gorm中*sql.DB使用tx.DB()


sel := "SELECT * FROM confessions WHERE $1 <@ categories"

categories := []string{"cat1", "cat2"}

rows, err := tx.DB().Query(sel, pq.Array(categories))

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


查看完整回答
反对 回复 2022-06-06
?
UYOU

TA贡献1878条经验 获得超4个赞

解决我的问题的最简单方法是使用 .Where 命令

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

这将返回一个 gorm.DB,因此我可以继续链接操作。&& 运算符用于检查 OVERLAPPING 元素。


查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 442 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信