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{})