如何在gorm中实现预加载
How to implement preloading in gorm
我正在使用 gorm。
我有以下问题,希望有人能帮我解决或解释更多相关问题
type User struct {
ID int
Name string
Addresses []Address
}
type Address struct {
UserID int `gorm:"index;not null"`
Address string
City string
Zipcode int
Country string
}
if err := db.Select("name").Preload("Addresses").Find(&users).Error; err != nil {
// Display error message
} else {
//
}
结果:
[
{
"created_at": "2017-04-02T00:07:59Z",
"updated_at": "2017-04-02T00:07:59Z",
"name": "Richard"
}
]
SQL 日志:
SELECT * FROM `users` WHERE `users`.deleted_at IS NULL AND ((1 <> 1))
预期结果:
[
{
"created_at": "2017-04-02T00:07:59Z",
"updated_at": "2017-04-02T00:07:59Z",
"name": "Richard",
"addresses": [
{
"address": "No 1, Street 5",
"city": "New York",
"country": "US"
}
]
}
]
我在 Whosebug 上研究了一些其他 post,但没有找到任何解决方案
Select 缺少 id
字段,因此未应用预加载。下面的代码将解决问题
if err := db.Select("id, name").Preload("Addresses").Find(&users).Error; err != nil {
// Display error message
} else {
//
}
我正在使用 gorm。
我有以下问题,希望有人能帮我解决或解释更多相关问题
type User struct {
ID int
Name string
Addresses []Address
}
type Address struct {
UserID int `gorm:"index;not null"`
Address string
City string
Zipcode int
Country string
}
if err := db.Select("name").Preload("Addresses").Find(&users).Error; err != nil {
// Display error message
} else {
//
}
结果:
[
{
"created_at": "2017-04-02T00:07:59Z",
"updated_at": "2017-04-02T00:07:59Z",
"name": "Richard"
}
]
SQL 日志:
SELECT * FROM `users` WHERE `users`.deleted_at IS NULL AND ((1 <> 1))
预期结果:
[
{
"created_at": "2017-04-02T00:07:59Z",
"updated_at": "2017-04-02T00:07:59Z",
"name": "Richard",
"addresses": [
{
"address": "No 1, Street 5",
"city": "New York",
"country": "US"
}
]
}
]
我在 Whosebug 上研究了一些其他 post,但没有找到任何解决方案
Select 缺少 id
字段,因此未应用预加载。下面的代码将解决问题
if err := db.Select("id, name").Preload("Addresses").Find(&users).Error; err != nil {
// Display error message
} else {
//
}