如何进行多对多查找查询

时间:2019-08-18 08:18:15

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

我有两个具有多对多关系的结构,如下所示:

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)

但不允许使用此格式。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。查找指定语言的用户必须像这样使用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)