首页 文章

Gorm Golang获取一个集合及其关系

提问于
浏览
10

我最近开始使用Golang,并决定尝试将GORM作为ORM . 它在大多数情况下都能很好地工作,但由于大多数ORM有时它是有限的 . 幸运的是它与数据库/ sql紧密相关,因此我可以轻松地进行自定义查询 .

我想知道是否还有其他方法可以做到这一点:我有一个结构公司,公司有一对多的关系,电子邮件,地址和电话 . 我在gorm中使用以下代码来提取公司列表及其相应信息 . 我使用gorm的Preload函数 .

db.DBAccess.
    Model(&companies).
    Count(&dbInfo.Count).
    Order("companies.id asc").
    Offset(offset).
    Limit(length).
    Preload("Addresses").
    Preload("Phones").
    Preload("Emails").
    Find(&companies)

这完全没问题 . 但是我觉得在没有Preload功能的情况下还有另一种方法可以实现这一点 . 有任何想法吗?

1 回答

  • 2

    您可以稍后加载相关实体(仅在/如果需要),使用DB.Related,如the documentation所示:

    // User has many emails
    db.Model(&user).Related(&emails)
    //// SELECT * FROM emails WHERE user_id = 111;
    // user_id is the foreign key, 111 is user's primary key's value
    
    // Specify the foreign key
    db.Model(&user).Related(&emails, "ProfileId")
    //// SELECT * FROM emails WHERE profile_id = 111;
    // profile_id is the foreign key, 111 is user's primary key's value
    

    我没有在文档中看到另一种方式 .

相关问题