首页
学习
活动
专区
圈层
工具
发布

GORM协会
EN

Stack Overflow用户
提问于 2017-10-06 17:58:26
回答 1查看 452关注 0票数 1

鉴于在数据库中创建了以下数据结构,并且在适当的表中的行中有有效的数据:

代码语言:javascript
复制
type Deployment struct {
    gorm.Model
    Name        string `gorm:"unique_index:idx_name"`
    RestAPIUser string
    RestAPIPass string
    Servers     []Server
    model       *Model
}

type Server struct {
    gorm.Model
    DeploymentID uint
    Hostname     string `gorm:"unique_index:idx_hostname"`
    RestPort     string
    Version      string
}

我试图选择所有的部署,让GORM为每个部署自动填充服务器。

不幸的是,它做不到这一点。我尝试过几种使用Association() func的方法,但我似乎无法让它发挥作用。我似乎必须手动完成:-

代码语言:javascript
复制
func (m *Model) GetDeployments() ([]Deployment, error) {
    deployments := []Deployment{}
    err := m.db.Find(&deployments).Error
    if err != nil {
        return nil, err
    }

    deploymentsWithServers := []Deployment{}

    for _, d := range deployments {
        servers := []Server{}
        err := m.db.Model(&d).Association("Servers").Find(&servers).Error
        if err != nil {
            return nil, err
        }

        d.Servers = servers
        deploymentsWithServers = append(deploymentsWithServers, d)
    }

    return deploymentsWithServers, nil
}

有人建议我如何让GORM自动填充服务器字段吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-22 20:36:11

试一试

代码语言:javascript
复制
m.db.Preload("Servers").Find(&Deployment{})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46611449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档