Heim >Backend-Entwicklung >Golang >So scannen Sie GORM-Abfrageergebnisse effektiv in Strukturen: Ein Leitfaden zur Lösung von Zuordnungsproblemen

So scannen Sie GORM-Abfrageergebnisse effektiv in Strukturen: Ein Leitfaden zur Lösung von Zuordnungsproblemen

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 05:25:29656Durchsuche

How to Effectively Scan GORM Query Results into Structs: A Guide to Resolving Mapping Issues

GORM-Abfrageergebnisse in Strukturen scannen

Beim Abfragen von Daten mit GORM können Probleme beim Scannen der Ergebnisse in eine benutzerdefinierte Datenstruktur auftreten. In diesem Artikel wird untersucht, wie solche Herausforderungen effektiv gelöst werden können.

Beispielcode und Problembeschreibung

Betrachten Sie den folgenden Code, der Daten aus zwei Tabellen, „users“ und „credit_cards“, mithilfe eines Left-Joins abruft:

<code class="go">type res struct {
    id       int
    number   int
    user_id int
}

func getDataJoin() {
    new := []res{}
    db.Db.Table("users").Select("users.id as id, credit_cards.number as number, credit_cards.user_id as user_id").Joins("left join credit_cards on credit_cards.user_id = users.id").Scan(&new)
    fmt.Println("user\n", new)
}</code>

Diese Abfrage generiert das folgende Ergebnis:

[
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0}
]

Obwohl der korrekte Abfrageergebnissatz in der Datenbank erhalten wurde, besteht das neue Array ausschließlich aus Standardwerten.

Lösung: Konventionen und Zuordnungen zur Feldbenennung

Um dieses Problem zu beheben, stellen Sie sicher, dass die Feldnamen in der Struktur mit den Spaltennamen der Datenbank übereinstimmen. Standardmäßig erwartet GORM, dass Feldnamen genau mit den Spaltennamen übereinstimmen. Alternativ können Sie mithilfe des gorm-Tags explizite Zuordnungen zwischen Spalten und Feldern angeben:

<code class="go">// Solution 1: Public Fields

type Res struct {
    ID       int
    Number   int
    UserID   int
}

// Solution 2: Explicit Mapping

type res struct {
    id       int      `gorm:"column:id"`
    number   int      `gorm:"column:number"`
    user_id  int      `gorm:"column:user_id"`
}</code>

Durch die Anwendung dieser Lösungen kann GORM die Abfrageergebnisse korrekt in das neue Array scannen.

Das obige ist der detaillierte Inhalt vonSo scannen Sie GORM-Abfrageergebnisse effektiv in Strukturen: Ein Leitfaden zur Lösung von Zuordnungsproblemen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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