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

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

WBOY
WBOYnach vorne
2024-02-11 11:45:08775Durchsuche

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)
}

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)?

Lösung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen