Menyimpan struktur terbenam dengan GORM menimbulkan cabaran apabila berurusan dengan jenis seperti:
<code class="go">type A struct { point GeoPoint } type GeoPoint struct { Lat float64 Lon float64 }</code>
Secara lalai, GORM cuba mencipta jadual berasingan untuk GeoPoint struct terbenam. Walau bagaimanapun, untuk menambahkannya sebagai medan dalam struct induk A, pertimbangkan penyelesaian berikut yang diilhamkan oleh cerapan Chris:
<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>
Pendekatan ini membolehkan penggabungjalinan dan pembongkaran struct terbenam dalam struktur induk yang lancar , memastikan ia disimpan dan diambil daripada pangkalan data sebagai satu entiti.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Struktur Terbenam dalam GORM sebagai Entiti Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!