- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我是 Go 和 GORM 的新手。当我想连接两个表并选择两个表中的所有字段时,我遇到了 gorm 问题。
我的模型:
行动:
type Action struct {
ID uint64
Type int
Url string
}
type Reminder struct {
ID uint64 `gorm:"primary_key"`
MerchantID uint64
MerReminderID string
Title string
Description string
ActionID uint64
Action *Action `gorm:"save_associations:false"`
Payload string
StartAt time.Time `gorm:"-"`
EndAt time.Time `gorm:"-"`
}
type UserReminder struct {
UserID uint64
ReminderID uint64
Reminder Reminder
StartAt time.Time
EndAt time.Time
Expired bool
}
我的要求:我想获得一次UserID
的所有Reminder
。
var reminders []*models.Reminder
err := db.Set("gorm:auto_preload", true).
Raw("SELECT * FROM user_reminders AS ur, reminders AS r WHERE ur.reminder_id = r.id AND ur.user_id = ?", userID).
Preload("Actions").
Scan(&reminders)
=> 问题:连接两个表时选择所有列,但对象 Action
无法预加载。
var reminders []*models.Reminder
err := db.Set("gorm:auto_preload", true).
Joins("JOIN user_reminders ON user_reminders.reminder_id = reminders.id").
Where("user_reminders.user_id = ? AND user_reminders.end_at >= ? AND user_reminders.deleted_at IS NULL", userID, time.Now()).
Find(&reminders)
=> 问题:自动预加载成功对象Action
并选择表Reminder
中的所有列。但是在表 User_Reminder
Start_At
和
End_At
请帮我解决这个问题。在我的例子中,我想自动预加载对象 Action 并在连接两个表 Reminder
和 User_Reminder
非常感谢。
最佳答案
@Anh Vinh HuynhGorm Scan 方法不支持预加载,因此您必须改用 Find 方法。 (你的解决方案2)并从
的 StartAt 和 EndAt 中删除gorm:"-"
标签
关于戈尔姆 |如何使用扫描和预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55821964/
我是 Go 和 GORM 的新手。当我想连接两个表并选择两个表中的所有字段时,我遇到了 gorm 问题。 我的模型: 行动: type Action struct { ID ui
如何使用 slice 作为查询目标。这是我尝试过的代码 var username []interface{} db.Table("test_name").Select("username").Find
场景: 我有两个域 bean Book 和 Author。作者与图书具有一对多关联。 我想要今年没有写过书的作者(这不是真实的情况:)) 这是我的 MySQL 查询: SELECT * FROM au
您好,我现在正在学习使用 golang,并且有一个 api 端点,我想返回数据库中的所有现有用户,但是我的查询只返回最后一个用户。 base.go < responsible for establis
我正在尝试创建一对具有一对一映射的 GORM 域对象,但需要注意的是两个表之间的键不是长键,而是 UUID 字符串/varchar。我到处寻找有关如何在 grails/gorm 中执行此操作的讨论,并
我是一名优秀的程序员,十分优秀!