Das Speichern eingebetteter Strukturen mit GORM stellt eine Herausforderung dar, wenn es um Typen geht wie:
<code class="go">type A struct { point GeoPoint } type GeoPoint struct { Lat float64 Lon float64 }</code>
Standardmäßig ist GORM versucht, eine separate Tabelle für die eingebettete Struktur GeoPoint zu erstellen. Um es jedoch als Feld innerhalb der übergeordneten Struktur A hinzuzufügen, sollten Sie die folgende Lösung in Betracht ziehen, die von den Erkenntnissen von Chris inspiriert ist:
<code class="go">import ( "encoding/json" "gorm.io/gorm" ) // Define custom Scan and Value methods for ChildArray to enable automatic marshalling and unmarshalling. type ChildArray []Child func (sla *ChildArray) Scan(src interface{}) error { return json.Unmarshal(src.([]byte), &sla) } func (sla ChildArray) Value() (driver.Value, error) { val, err := json.Marshal(sla) return string(val), err } // Define the parent struct with the embedded ChildArray. type Parent struct { *gorm.Model Childrens ChildArray `gorm:"column:childrens;type:longtext"` }</code>
Dieser Ansatz ermöglicht ein nahtloses Marshalling und Unmarshalling der eingebetteten Struktur innerhalb der übergeordneten Struktur , um sicherzustellen, dass es als einzelne Einheit in der Datenbank gespeichert und abgerufen wird.
Das obige ist der detaillierte Inhalt vonWie speichere ich eingebettete Strukturen in GORM als einzelne Entität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!