Heim > Backend-Entwicklung > Golang > Wie lassen sich zugehörige Daten in der Ort-Stadt-Beziehung von GORM effizient abrufen?

Wie lassen sich zugehörige Daten in der Ort-Stadt-Beziehung von GORM effizient abrufen?

Linda Hamilton
Freigeben: 2024-12-18 13:40:11
Original
885 Leute haben es durchsucht

How to Efficiently Fetch Associated Data in GORM's Place-Town Relationship?

GORM Golang ORM-Assoziationen: Zugehörige Felder abrufen

In GORM, einem leistungsstarken ORM für Go, können Sie Assoziationen zwischen Strukturen erstellen, die Datenbanktabellen darstellen. In diesem Szenario ist eine Ortsstruktur mit einer Stadtstruktur verknüpft, wobei jeder Ort zu einer Stadt gehört.

Ihr Code ruft derzeit alle Ortsdatensätze ab, Sie möchten jedoch die zugehörigen Stadtinformationen für jeden Ort einschließen. Der Fehler in Ihrer Abfrage besteht darin, dass der Fremdschlüssel TownID nicht in der Place-Struktur angegeben ist.

Um dies zu beheben, ändern Sie die Place-Struktur:

type Place struct {
  ID          int
  Name        string
  TownID      int // The foreign key
  Town        Town
}
Nach dem Login kopieren

Jetzt haben Sie mehrere Möglichkeiten dazu Rufen Sie die zugehörigen Stadtdaten ab:

Option 1: Manuelles Laden (nicht Empfohlen)

Durchlaufen Sie jeden Ort und laden Sie die zugehörige Stadt manuell mithilfe von Model.Related:

places := []Place{}
db.Find(&places)
for i, _ := range places {
    db.Model(places[i]).Related(&places[i].Town)
}
Nach dem Login kopieren

Dieser Ansatz liefert zwar das erwartete Ergebnis, leidet aber unter dem Fehler „N 1“. " Problem, bei dem für jeden Ort mehrere Datenbankabfragen ausgegeben werden.

Option 2: Vorladen (Empfohlen)

Verwenden Sie die Vorladefunktion, um die zugehörige Stadt beim Abrufen von Ortsdatensätzen sofort zu laden:

db.Preload("Town").Find(&places)
Nach dem Login kopieren

Dadurch werden nur zwei Abfragen ausgelöst: eine zum Abrufen aller Orte und eine um alle zugehörigen Städte abzurufen. Es lässt sich gut mit der Anzahl der Orte und Städte skalieren.

Erwartete Ausgabe:

[{1 Place1  {1 Town1} 1} {2 Place2  {1 Town1} 1}]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lassen sich zugehörige Daten in der Ort-Stadt-Beziehung von GORM effizient abrufen?. 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