Strukturen in Strukturen: Eine Anleitung zum erweiterten Scannen von SQLX
Bei der Verwendung von SQLX können beim Scannen von Daten in verschachtelte Strukturen Probleme auftreten. Betrachten wir dieses Beispiel:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address `json:"adress"` // Oops, missing embedded property } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
Beim Versuch, Daten mit dieser Definition zu scannen, wird dieser Fehler auftreten:
missing destination name street in *models.Customer
Lösung: Embrace Embedded Structs
Der Schlüssel zur Lösung dieses Problems liegt im Verständnis der umfassenden Scanfunktionen von SQLX. Wie aus der Dokumentation hervorgeht, unterstützt es das Einbetten von Strukturen und die Heraufstufung ihrer Felder in die übergeordnete Struktur. Um dies zu erreichen, betten Sie einfach „Adresse“ in „Kunde“ ein:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address }
Beachten Sie, dass wir das eigene Datenbank-Tag des Adressfelds entfernt haben, da es keine separate Einheit mehr ist.
Achtung: Reduzieren die JSON-Ausgabe
Durch das Einbetten von Adresse wird jedoch die JSON-Ausgabe der Kundenstruktur reduziert, da sowohl Name als auch Stadt sind nun direkte Grundstücke:
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
Mögliche Alternativen
Falls dies nicht gewünscht ist, gibt es mehrere alternative Ansätze:
Das obige ist der detaillierte Inhalt vonWie scanne ich verschachtelte Strukturen effektiv mit SQLX?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!