登录
首页 >  Golang >  Go问答

使用 GORM 查询数据库中的数据并使用 pq.StringArray 属性

来源:stackoverflow

时间:2024-02-27 08:09:26 491浏览 收藏

今天golang学习网给大家带来了《使用 GORM 查询数据库中的数据并使用 pq.StringArray 属性》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我有以下 gorm.model,我想查询我的 postgres 数据库以返回在 .categories 属性中具有特定类别的忏悔,但我不知道如何在 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+"%")
        }
    }

解决方案


使用 <@ 进行数组包含。您可以使用 *sql.dbquery 函数进行查询,并在 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 数组函数 here
  • protgresql 数组在 golang 中的使用 here

今天关于《使用 GORM 查询数据库中的数据并使用 pq.StringArray 属性》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>