„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie bin ich eine Struktur in eine andere Struktur in GORM ein und speichere sie als Feld in der Haupttabelle?

Wie bin ich eine Struktur in eine andere Struktur in GORM ein und speichere sie als Feld in der Haupttabelle?

Veröffentlicht am 2025-01-30
Durchsuche:650

How do I embed a struct within another struct in GORM and store it as a field in the main table?

Einbettung von Strukturen in gorm

In GORM können GORM eine separate Tabelle für die eingebettete Struktur erstellen. Wenn Sie jedoch die eingebettete Struktur als zusätzliches Feld innerhalb der Haupttabelle speichern möchten, kann der folgende Ansatz verwendet werden:

Lösung:

  1. definieren Eine eingebettete Struktur:
type A struct {
    Point *GeoPoint
}

type GeoPoint struct {
    Lat float64
    Lon float64
}
  1. implementieren Sie die Schnittstellen sql.scanner und driver.valuer für die eingebettete Struktur:
func (gp *GeoPoint) Scan(src interface{}) error {

    // Convert the `src` value to a byte array.
    b, ok := src.([]byte)
    if !ok {
        return fmt.Errorf("could not convert to byte array")
    }

    // Unmarshal the byte array into the `GeoPoint` struct.
    if err := json.Unmarshal(b, gp); err != nil {
        return fmt.Errorf("could not unmarshal JSON: %v", err)
    }

    return nil
}

func (gp GeoPoint) Value() (driver.Value, error) {

    // Marshal the `GeoPoint` struct into a byte array.
    b, err := json.Marshal(gp)
    if err != nil {
        return nil, fmt.Errorf("could not marshal JSON: %v", err)
    }

    return string(b), nil
}
  1. das GORM -Modell aktualisieren, um die eingebettete Struktur mit dem GORM zu verwenden: "Spalte" und Gorm: "Typ" Tags:
type A struct {
    gorm.Model
    Point *GeoPoint `gorm:"column:point;type:json"`
}

Durch die Implementierung der Scan- und Wertmethoden kann GORM die eingebettete Struktur in ein JSON -Format konvertieren. Die GORM: "Spalte" und GORM: "Typ" -Tags Geben Sie den Spaltennamen und den Datentyp für die eingebettete Struktur in der Haupttabelle an.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3