想象一下以下模型:
type (
Account struct {
gorm.Model
CustomID string `gorm:"index;unique"`
Name string
Profiles []*Profiles `gorm:"ForeignKey:AccountID"`
}
Profile struct {
gorm.Model
AccountID uint `gorm:"index"`
TheFoo *Foo
TheDoo *Doo
}
Foo struct {
ProfileID uint `gorm:"index"`
Boo string
}
Doo struct {
ProfileID uint `gorm:"index"`
Moo string
}
)
我获得整个结构的所有尝试总是失败。 acc总是只填充帐户数据而没有配置文件。
我甚至对这些db.Model(&acc).Related(&Profile{})
的东西进行了考察,但仍然没有成功。 (也就是说,非常糟糕的)文档也没有澄清这一点。
var acc Account
db.Find(&acc, "custom_id = ?", myCustomID)
你怎么会这样做?
答案 0 :(得分:1)
我相信你可以使用支持ne的Preload方法,即:
account := new(Account)
db.Preload("Profiles.TheDoo").Preload("Profiles.TheFoo").Find(account, "custom_id = ?", myCustomID)
我还没有检查过你是否真的需要预先加载Profiles
,但如果事实证明你使用它就不会受到伤害。
答案 1 :(得分:0)
您可以在调用相关功能时添加代码吗? http://jinzhu.me/gorm/associations.html#has-many我在文档中看到的内容很多,应该是这样的。
var acc Account
db.Find(&acc, "custom_id = ?", myCustomID)
db.Model(&acc).Related(&profiles)