Я пробовал xy разными способами, чтобы понять это, ни один не работал. Кроме того, я искал решение для всего inte rnet, но мне ничего не подходит.
У меня есть две таблицы: users
и user_info
в базе данных MySQL. Кроме того, я создал две структуры внутри моего Go приложения для обеих таблиц:
type User struct {
Token string `gorm:"-" json:"-"`
ID int `gorm:"primary_key;column:id" json:"-"`
HID string `gorm:"-" json:"uid"`
Username string `gorm:"column:username" json:"username"`
EmailAddress string `gorm:"column:email_address" json:"email_address"`
Password string `gorm:"column:password" json:"-"`
Coins int `gorm:"column:coins" json:"coins"`
Admin bool `gorm:"column:admin" json:"admin"`
RegisteredAt string `gorm:"column:registered_at" json:"registered_at"`
ReferralCode string `gorm:"column:referral_code" json:"referral_code"`
LastLogin string `gorm:"column:last_login" json:"last_login"`
UserInfo Info `json:"user_info"`
}
type Info struct {
ID int `gorm:"primary_key;column:id" json:"-"`
UserID int `gorm:"primary_key;column:user_id" json:"-"`
FirstName string `gorm:"column:first_name" json:"first_name"`
LastName string `gorm:"column:last_name" json:"last_name"`
DOB string `gorm:"column:dob" json:"dob"`
Biography string `gorm:"column:biography" json:"biography"`
Вот запрос, который я выполняю:
var response interface{}
type result struct {
User
Info
}
var users []result
findUserQuery := cn.DB.Raw("SELECT * FROM users INNER JOIN user_info ON users.id = user_info.user_id WHERE ((username = ?) OR (email_address = ?))", req.Identity, req.Identity).Scan(&users)
if findUserQuery.Error != nil {
log.Fatal(findUserQuery.Error)
}
response = map[string]interface{}{
"error": false,
"json": map[string]interface{}{
"success": true,
"user": users[0],
},
}
return response
}
Это работает частично. User
структура заполняется значениями. Тем не менее, user_info
, даже если находится в ответе JSON, вместе со своими свойствами, его значения пусты .
Существует ли правильный способ сканирования объединенных запросов в структуру без вручную сканировать каждое значение?