从有条件的 gorm 中检索多对多结果

Retrieving many to many results from gorm with condition

例如这是我的模型

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

type Language struct {
  gorm.Model
  Name string
}

我想获得会说英语的用户。如何设置条件?我试过这个但它不起作用:

db.Preload("Languages").Where("Language.Name = ?", conditionVal).Find(&users)

您可以从语言预加载用户

language := Language{}
db.Where("Name = ?", langVal).Preload("Users").Find(&language)
users := language.Users

你的模型也需要反向引用

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

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

官方文档:Preload with conditions