Membenamkan Struktur dengan GORM
Dalam GORM, apabila membenamkan struct dalam yang lain, GORM boleh mencipta jadual berasingan untuk struct terbenam. Walau bagaimanapun, jika anda ingin menyimpan struct terbenam sebagai medan tambahan dalam jadual utama, pendekatan berikut boleh digunakan:
Penyelesaian:
<code class="go">type A struct { Point *GeoPoint } type GeoPoint struct { Lat float64 Lon float64 }</code>
<code class="go">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 }</code>
<code class="go">type A struct { gorm.Model Point *GeoPoint `gorm:"column:point;type:json"` }</code>
Dengan melaksanakan kaedah Imbas dan Nilai, GORM boleh menukar struct terbenam kepada dan daripada format JSON. Teg gorm:"column" dan gorm:"type" menentukan nama lajur dan jenis data untuk struct terbenam dalam jadual utama.
Atas ialah kandungan terperinci Bagaimanakah cara saya membenamkan struct dalam struct lain dalam GORM dan menyimpannya sebagai medan dalam jadual utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!