V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EDDYCJY
V2EX  ›  问与答

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

  •  
  •   EDDYCJY · 2018-01-27 22:42:30 +08:00 · 3590 次点击
    这是一个创建于 2478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一、结构体定义

    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 文档看了一大波,也谷了不少;但是没看到 /解决到我的疑问,可能是刚入门的原因,求解。。。。纠结很久了:(

    谢谢

    EDDYCJY
        1
    EDDYCJY  
    OP
       2018-01-28 17:21:41 +08:00
    已自行解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2530 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:53 · PVG 13:53 · LAX 21:53 · JFK 00:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.