這是我的數據庫架構:用戶: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 回答

嗶嗶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
}
- 2 回答
- 0 關注
- 300 瀏覽
添加回答
舉報
0/150
提交
取消