结构:
type (
User struct{
ID int64
Name string
}
Group struct{
ID int64
Name string
Users []User
}
)
I 插入宽度:
users := []User{}
user := User{ID: int64(1)}
gormConn.First(&user) // .Error is nil, user with ID=1 exists
users = append(users, user)
group := Group{
Name: "Grrr",
Users: users,
}
gormConn.Create(&group)
但是当我调用 gormConn.Find(&groups)
时,我会得到 [{id: 1, name: "Grrr", users: null}]
而不是[{id: 1, name: "Grrr", 用户: [{id:1, name: "Usr"}]}]
同样在 SQL 表 groups
列 users
中未找到。
(所有结构都将 gormConn.AutoMigrate
)
最佳答案
使用ORM加载外键相关表称为Eager Loading。在 GORM 中使用 Find()
默认关闭 EagerLoading。最好使用 Preload()
加载嵌套数据。
官方文档链接 - http://jinzhu.me/gorm/crud.html#preloading-eager-loading
关于Golang GORM 和几个表关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284532/