登录
首页 >  Golang >  Go问答

实现多对多关联查询的方法

来源:stackoverflow

时间:2024-03-04 11:27:27 182浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《实现多对多关联查询的方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

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

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)

但是不允许这种格式。


解决方案


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

本篇关于《实现多对多关联查询的方法》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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