2017-10-06 4 views
1

데이터베이스에 작성하고 해당 테이블의 행에 유효한 데이터가 된 다음과 같은 데이터 구조를 감안할 때 : -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 
} 

내가 자동으로 GORM을 모두 배포를 선택하고이려고을 각 배치의 서버를 채우십시오.

불행히도, 이렇게하지 않습니다. 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 
} 

사람이 내가 GORM 자동으로 서버 필드를 채우기 위해 얻을 수있는 방법 어떤 제안이 있습니까? 감사!

답변

0

시도

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