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
Freigeben: 2024-10-27 05:25:29
Original
648 Leute haben es durchsucht

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

Diese Abfrage generiert das folgende Ergebnis:

[
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0}
]
Nach dem Login kopieren

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

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage