【问题标题】:How to do many-to-many Find query如何进行多对多查找查询
【发布时间】:2019-12-23 20:27:06
【问题描述】:

我有两个这样的多对多关系结构:

type User struct {
  gorm.Model
  Languages         []Language `gorm:"many2many:user_languages;"`
}

type Language struct {
  gorm.Model
  Name string
}

我想查找指定语言的用户。像这样:

var users []User
var lang = Language <-- this is the specified language
db.Model(&user).Association("Languages").Where("id = ? ", lang.ID).Find(&users)

但是这种格式是不允许的。

【问题讨论】:

    标签: postgresql go many-to-many go-gorm


    【解决方案1】:

    我自己找到了解决方案。查找具有指定语言的用户必须使用Back-Reference,如下所示:

    type User struct {
      gorm.Model
      Languages         []*Language `gorm:"many2many:user_languages;"`
    }
    
    type Language struct {
      gorm.Model
      Name string
      Users               []*User     `gorm:"many2many:user_languages;"`
    }
    

    查询将采用以下形式:

    var users []User
    var lang = Language <-- this is the specified language
    db.Model(&lang).Association("Users").Find(&users)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 2014-05-18
      • 2021-02-10
      • 1970-01-01
      • 2019-03-28
      • 2010-10-24
      • 1970-01-01
      相关资源
      最近更新 更多