Questo è il mio schema db:Gorm molti a molti Selezionare dà associazione non valida [] errore
utenti:
id uuid PRIMARY KEY , title character
"1234" "ABCD"
languages:
id uuid PRIMARY KEY , name character
"1122" "eng"
"1133" "man"
user_languages:
user_id uuid, language_id uuid
"1234" "1122"
"1234" "1133"
Questo è il mio codice:
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
}
mi aspetto questo risultato:
{
"id": "1234",
"title": "ABCD",
"languages" : [{
"id" : "1122",
"name" : "eng"
},{
"id" : "1122",
"name" : "eng"
}]
}
Ma io sono sempre invalid association []
su console, l'aggiunta di un registratore di Gorm non ha fornito ulteriori informazioni.
Anche se posso solo ottenere un oggetto "lingue" come un array di nomi di lingue, questo è anche bene:
"languages" : ["eng", "man"]
non 'db.Model (e utenti) .Related (e lingue)' devono essere 'db .Model (e utente) .Related (user.languages) '? Voglio dire, anche se quell'istruzione ha avuto successo, l'oggetto utente che hai restituito avrebbe una matrice di lingue vuota poiché non le hai mai assegnate, solo alla variabile locale. – evanmcdonnal