【发布时间】:2017-04-04 06:24:30
【问题描述】:
我正在使用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"
}
]
}
]
我在 StackOverflow 上研究了其他一些帖子,但没有看到任何解决方案
【问题讨论】:
-
你为什么不打开日志,看看生成的SQL是不是你所期望的?
db.LogMode(true)在你的db.Preload之前,然后让我们知道它说了什么。如果这是您所期望的,请向我们展示您的数据库结构和相关数据。 -
@dave 只看到用户表上的 SELECT 查询
-
我很惊讶你能得到任何结果,因为
AND ((1 <> 1))往往会从你的SELECT查询中排除所有内容。你确定你得到的结果不是某种默认结果吗? -
@DavidFaber 感谢您的评论,我认为我在调试以显示 SQL 查询时出错了,所以它是错误的日志。