我有以下 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,但我不确定它是否适用于数组函数。
UYOU
TA贡献1878条经验 获得超4个赞
解决我的问题的最简单方法是使用 .Where 命令
tx = tx.Where("categories && ?", pq.Array(categories))
这将返回一个 gorm.DB,因此我可以继续链接操作。&& 运算符用于检查 OVERLAPPING 元素。
- 2 回答
- 0 关注
- 442 浏览
添加回答
举报
0/150
提交
取消