登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-26 18:51:34 480浏览 收藏

**摘要:** 在使用 GORM 进行多对多关系检索时,可以通过对关联表设置条件来获取满足条件的结果。对于有条件的多对多检索,需要从关联表预加载数据,并设置反向引用,代码示例如下: ```go 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
}

我想吸引会英语的用户。我该如何设置条件?我已经尝试过这个,但它不起作用:

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

今天关于《检索 gorm 中有条件的多对多结果》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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