亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取嵌套結構

獲取嵌套結構

Go
慕勒3428872 2022-08-01 15:32:31
我有以下結構:type Users struct {    ID           int64            `gorm:"id" json:"id"`    Name         int64            `gorm:"name" json:"name"`    UserTypeID   int              `gorm:"column:user_type_id" json:"-"`    UserType     BusinnesUserType `gorm:"foreignKey:id;references:user_type_id" json:"user_type"`    LanguageID   int64            `gorm:"column:language_id" json:"-"`    Language     Language         `gorm:"foreignKey:ID;references:LanguageID" json:"language"`}type BusinnesUserType struct {    ID          int64           `gorm:"id" json:"id"`    Description json.RawMessage `gorm:"description" json:"description"`}type Language struct {    ID          int64           `gorm:"id" json:"id"`    Description json.RawMessage `gorm:"description" json:"description"`}我試圖得到這樣的東西:{   "id":1,   "name":"dd",   "user_type":{      "id":1,      "description":{         "en":"admin"      }   },   "language":{      "id":1,      "description":{         "en":"English"      }   }}這是我對mysql的gorm查詢:db.Preload("UserType").Preload("Language").Where("id=?",1).Find(&user)如果我使用Debug()選項,我會看到:SELECT * FROM `languages` WHERE `languages`.`id` = 1 SELECT * FROM `business_user_types` WHERE `business_user_types`.`id` = 1 SELECT * FROM `users` WHERE `id` = 1 但是我得到了以下json:{   "id":1,   "name":"dd",   "user_type":{      "id":null,      "description":null   },   "language":{      "id":null,      "description":null   }}我以錯誤的方式使用預加載命令?我已經嘗試過使用聯接和關聯,結果相同。
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

我認為用戶模型應該看起來像這樣..

type Users struct {

    ID           int64            `gorm:"id" json:"id"`

    Name         int64            `gorm:"name" json:"name"`

    UserTypeID   int              `gorm:"column:user_type_id" json:"-"`

    UserType     BusinnesUserType `gorm:"foreignKey:UserTypeID;" json:"user_type"` // changed this line

    LanguageID   int64            `gorm:"column:language_id" json:"-"`

    Language     Language         `gorm:"foreignKey:LanguageID;" json:"language"` // changed this line

}

更改了此行..

Language     Language         `gorm:"foreignKey:LanguageID;" json:"language"`


UserType     BusinnesUserType `gorm:"foreignKey:UserTypeID;" json:"user_type"`

編輯你必須手動外鍵

// User : Relations

DB.Model(&models.Users{}).AddForeignKey("user_type_id", "Businnesusertypes(id)", "<CASCADE/RESTRICT>", "<CASCADE/RESTRICT>")

DB.Model(&models.Users{}).AddForeignKey("language_id", "languages(id)", "<CASCADE/RESTRICT>", "<CASCADE/RESTRICT>")



查看完整回答
反對 回復 2022-08-01
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我已經找到了解決方案。問題出在“預加載”函數中,因為需要與預加載表的關系?,F在,我的 gorm 查詢是這樣的:


result := db.Preload("UserType", "id=?", &user.UserTypeID).

        Preload("Language", "id=?", &user.LanguageID).

        Where("business_users.id=?", 1).Find(&user)

我的結構是這樣的:


type BusinessUsers struct {

    gorm.Model

    Name           string `gorm:"name" json:"name"`

    UserTypeID     int64

    UserType       BusinessUserType `gorm:"foreignkey:UserTypeID"`

    LanguageID     int64

    Language       Language `gorm:"foreignkey:LanguageID"`


查看完整回答
反對 回復 2022-08-01
  • 2 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號