GORM协会

问题描述:

鉴于已在数据库中创建并且在适当的表中的行有效数据数据结构如下: -GORM协会

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 
} 

我试图自动选择所有部署,并有格姆填写每个部署的服务器。

不幸的是,它没有这样做。我尝试了使用Associations()func的几种变体,但我似乎无法使其工作。我似乎有手动执行此操作: -

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 
} 

没有人有任何建议,我怎么能得到格姆自动填写服务器领域?谢谢!

尝试

m.db.Preload("Servers").Find(&Deployment{})