Ich bin meine Datenbank unter Verwendung gorm.Abrufen von Viele-zu-viele-Ergebnisse von GORM
Ich habe zwei Tabellen (service
und resource
) mit einer Viele-zu-viele-Beziehung. Ich modelliert sie in Code als solche:
type Service struct {
BaseModel
Name string `gorm:"not null;unique_index"`
Resources []Resource `gorm:"many2many:service_resource"`
}
type Resource struct {
BaseModel
Name string `gorm:"not null;unique_index"`
}
gorm die Verwendung AutoMigrate die folgenden Tabellen erstellt:
(I ausgeführt auch eine rohe SQL-Abfrage der ID Primärschlüssel in der hinzufügen . Zuordnungstabelle)
Um einen neuen Dienst zu erstellen, verwende ich den folgenden Code:
service := Service{
Name: "core",
Resources: []Resource{
{Name: "ec2"},
{Name: "dynamo"},
},
}
db.Create(&service)
Dies erstellt alle Ressourcen zusammen mit dem Dienst und füllt die Beziehung zwischen ihnen in der service_resource
Tabelle sehr gut, wie erwartet.
Mein Problem ist jedoch, wenn ich für die Dienste abfrage. Ich verwende den folgenden Code alle Dienste abzurufen:
services := []model.Service{}
db.Find(&services)
Dies gibt erfolgreich mit dem Dienste Array gefüllt, aber die Resources
Array jedes Dienstes ist leer:
"services": [
{
"ID": 1,
"Name": "core",
"Resources": null
},
...
]
ich unter der Annahme war, dass Gorm würde es automatisch füllen. Gibt es einen Schritt, den ich vermisse?