GORM ist eine beliebte ORM-Bibliothek der Go-Sprache, die zur Vereinfachung von Datenbankoperationen verwendet wird. Wenn wir GORM für eine Eins-zu-eins-Verknüpfung verwenden, können wir dies erreichen, indem wir die Beziehung zwischen Strukturen definieren. Zuerst müssen wir der Struktur ein Fremdschlüsselfeld hinzufügen und dann die „BelongsTo“-Methode von GORM verwenden, um die beiden Strukturen zu verknüpfen. Als nächstes können wir die Methode „Preload“ verwenden, um die zugehörigen Daten zum Zeitpunkt der Abfrage vorab zu laden, damit sie bei Bedarf zusammen abgerufen werden können. Auf diese Weise können wir problemlos Eins-zu-eins-Verknüpfungen implementieren und verwandte Daten bequem verwalten.
Ich versuche, Warteschlangenelemente aus der Datenbank zu laden. Ich habe einen API-Endpunkt erstellt, kann aber die Daten für die vorab zu ladenden Warteschlangenelemente nicht abrufen. Stattdessen wird das gesamte „Daten“-Objekt mit Nullwerten gefüllt.
Handler:
func QueueItemHandler(w http.ResponseWriter, r *http.Request) { var queueItems QueueItem var builder = database.Model(QueueItem{}) var queryError = builder. Preload("Status"). Preload("Data"). Find(&queueItems). Error w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(queueItems) }
So ist mein Gorm-Modell aufgebaut:
type QueueItemStatus struct { ID int64 `json:"id" gorm:"primary_key"` Name string `json:"name"` Description string `json:"description"` } type QueueItemData struct { ID int64 `json:"id" gorm:"primary_key"` QueueItemId int64 `json:"queue_item_id"` ScreenshotUrl string `json:"screenshot_url"` } type QueueItem struct { ID int64 `json:"id" gorm:"primary_key"` SourceUrl string `json:"source_url"` OriginId int64 `json:"origin_id"` StatusId int64 `json:"status_id"` Status QueueItemStatus `json:"status"` Data QueueItemData `json:"data" gorm:"foreignKey:id,references:queue_item_id"` CreatedAt time.Time `json:"created_at"` }
Ich dachte, ich habe das Modell vielleicht so eingestellt, dass es auf die falsche Spalte zeigt (falls vorhanden)?
Versuchen Sie, dies zu ändern
Data QueueItemData `json:"data" gorm:"foreignKey:QueueItemId;references:ID"`
Das obige ist der detaillierte Inhalt vonGORM: Wie kann man eins zu eins verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!