鉴于在数据库中创建了以下数据结构,并且在适当的表中的行中有有效的数据:
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的方法,但我似乎无法让它发挥作用。我似乎必须手动完成:-
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自动填充服务器字段吗?谢谢!
发布于 2017-10-22 20:36:11
试一试
m.db.Preload("Servers").Find(&Deployment{})https://stackoverflow.com/questions/46611449
复制相似问题