Сканирование объединенных таблиц в структуру с использованием GORM - PullRequest
0 голосов
/ 09 февраля 2020

Я пробовал 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, вместе со своими свойствами, его значения пусты .

Существует ли правильный способ сканирования объединенных запросов в структуру без вручную сканировать каждое значение?

...