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

我有以下 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+"%")

        }

    }


largeQ
浏览 443回答 2
2回答

江户川乱折腾

用于<@数组包含。您可以使用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

解决我的问题的最简单方法是使用 .Where 命令tx&nbsp;=&nbsp;tx.Where("categories&nbsp;&&&nbsp;?",&nbsp;pq.Array(categories))这将返回一个 gorm.DB,因此我可以继续链接操作。&& 运算符用于检查 OVERLAPPING 元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go