【发布时间】:2017-10-23 04:36:11
【问题描述】:
鉴于已在数据库中创建了以下数据结构,并且相应表中的行中存在有效数据:-
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 (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 自动填写服务器字段有任何建议吗?谢谢!
【问题讨论】: