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

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

gorm 多對多選擇給出無效關聯 [] 錯誤

gorm 多對多選擇給出無效關聯 [] 錯誤

Go
慕少森 2021-12-06 19:45:00
這是我的數據庫架構:用戶:id uuid PRIMARY KEY ,   title character"1234"                  "ABCD"語言:id uuid PRIMARY KEY ,   name character"1122"                  "eng""1133"                  "man"用戶語言:user_id uuid,   language_id uuid"1234"          "1122""1234"          "1133"這是我的代碼:type User struct {   Id           uuid.UUID  `json:"id" gorm:"primary_key"`   Title        string     `json:"title"`   Languages    []Language `json:"languages" gorm:"many2many:user_languages;"`}type Language struct {   ID   uuid.UUID `json:"id" gorm:"primary_key"`   Name string    `json:"name"`}func GetUser(id string) User {   user := User{}   languages := Language{}   db.Where("id = ?", id).Find(&user)    // SELECT * FROM users WHERE 'id' = id;   db.Model(&user).Related(&languages)    // SELECT * FROM "languages" INNER JOIN "user_languages" ON "user_languages"."language_id" = "languages"."id" WHERE "user_languages"."user_id" = 111   return user}我期待這個結果:{   "id": "1234",   "title": "ABCD",   "languages" : [{                "id" : "1122",               "name" : "eng"           },{                "id" : "1122",               "name" : "eng"           }]}但是我invalid association []在控制臺上,添加 gorm 記錄器沒有提供更多信息。即使我只能得到一個像語言名稱數組這樣的“語言”對象,這也很好:"languages" : ["eng", "man"]
查看完整描述

2 回答

?
忽然笑

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

你可以試試:

db.Model(&user).Related(&languages, "Languages")

更多例子可以在測試中找到


查看完整回答
反對 回復 2021-12-06
?
嗶嗶one

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

我認為你需要使用Association. 您還可以使用 更簡潔地獲取匹配用戶db.First(&user, id)。


func GetUser(id string) User {

    var user User


    db.First(&user, id)


    db.Model(&user).Association("Languages").Find(&user.Languages) 


    return user

}


查看完整回答
反對 回復 2021-12-06
  • 2 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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