Heim > Backend-Entwicklung > Golang > GORM: Wie kann man eins zu eins verknüpfen?

GORM: Wie kann man eins zu eins verknüpfen?

WBOY
Freigeben: 2024-02-11 11:45:08
nach vorne
853 Leute haben es durchsucht

GORM: Wie kann man eins zu eins verknüpfen?

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.

Frageninhalt

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)
}
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

Ich dachte, ich habe das Modell vielleicht so eingestellt, dass es auf die falsche Spalte zeigt (falls vorhanden)?

Lösung

Versuchen Sie, dies zu ändern

Data       QueueItemData    `json:"data" gorm:"foreignKey:QueueItemId;references:ID"`
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage