关于 Gorm 关联查询的问题,纠结许久,求帮助!

2018-01-27 22:42:30 +08:00
 EDDYCJY

一、结构体定义

type Article struct {
    ID int `gorm:"primary_key" json:"id"`
    TagID int `json:"tag_id"`
    Tag   Tag `json:"tag"`
    ...
}

type Tag struct {
    ID uint `gorm:"primary_key" json:"id"`
    Name string `json:"name"`
    ...
}

二、调用方法

单个查询

func GetArticle(id int) (article Article) {
    db.Where("id = ?", id).First(&article)
    db.Model(&article).Related(&article.Tag)

    return 
}

问题

现在问题是,单个查询可以,

但是假设是使用Find呢,Related那句关联查询,显然有问题,因为article已经是多个了,应该如何写??

1、循环的话应该不可能吧???

2、JOIN 查询构造器,应该可以实现,但是要把关联的字段也定义在结构体上(感觉不大好,而且属于绕过当前问题)


func GetArticles(id int) (article []Article) {
    db.Where("id = ?", id).Find(&article)
    
    //注,这里的关联查询就显然有问题了,此处应该如何改写?
    db.Model(&article).Related(&article.Tag)

    return 
}

ps: Gorm 文档看了一大波,也谷了不少;但是没看到 /解决到我的疑问,可能是刚入门的原因,求解。。。。纠结很久了:(

谢谢

3615 次点击
所在节点    问与答
1 条回复
EDDYCJY
2018-01-28 17:21:41 +08:00
已自行解决。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/426475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX