英文:
gorm: fetch relation later (without preloading)
问题
我知道我可以预加载模型中定义的关系,但是我还没有找到任何方法来在没有预加载的情况下加载关系。
示例:
type Template struct {
ID uint `gorm:"primary_key"`
Name string
UserID *uint
User *User `gorm:"foreignkey:UserID"`
}
现在我可以这样做:
db.Preload("User").Find(&templates)
但是如果我只想稍后获取User呢?
db.First(&template)
assert.Nil(template.User)
//如何现在获取User?
...
assert.NotNil(template.User)
谢谢提供的提示。
英文:
I know I can preload a relation defined in the model, but have not found any way how to load the relation later if I have an object which was not preloaded.
Sample:
type Template struct {
ID uint `gorm:"primary_key"`
Name string
UserID *uint
User *User `gorm:"foreignkey:UserID"`
}
Now I can:
db.Preload("User").Find(&templates)
But what if I just want to fetch the User later?
db.First(&template)
assert.Nil(template.User)
//how to fetch the user now?
...
assert.NotNil(template.User)
thanks for tips.
答案1
得分: 2
按照文档中的查找关联指南进行操作:
db.First(&template)
assert.Nil(template.User)
//如何现在获取用户?
db.Model(&template).Association("User").Find(template.User)
assert.NotNil(template.User)
英文:
Follow the find associations guide in the docs:
db.First(&template)
assert.Nil(template.User)
//how to fetch the user now?
db.Model(&template).Association("User").Find(template.User)
assert.NotNil(template.User)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论