Я новичок в 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
}
Моя просьба: я хочу получить все Reminder
за один раз UserID
.
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)
=> Promblem : Выбрать все столбцы при объединении двух таблиц, но объект 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
. Но пропустить два столбца Start_At
и End_At
в таблице User_Reminder
Пожалуйста, помогите мне решить эту проблему. В моем случае я хочу автоматически предварительно загрузить объект Action и выбрать все столбцы при объединении двух таблиц Reminder
и User_Reminder
Большое спасибо.