Bagaimanakah cara saya membenamkan struct dalam struct lain dalam GORM dan menyimpannya sebagai medan dalam jadual utama?

Barbara Streisand
Lepaskan: 2024-11-03 03:20:03
asal
966 orang telah melayarinya

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

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:

  1. Takrifkan struct terbenam:
<code class="go">type A struct {
    Point *GeoPoint
}

type GeoPoint struct {
    Lat float64
    Lon float64
}</code>
Salin selepas log masuk
  1. Laksanakan antara muka sql.Scanner dan driver.Valuer untuk struct terbenam:
<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>
Salin selepas log masuk
  1. Kemas kini model GORM untuk menggunakan struct terbenam dengan teg gorm:"column" dan gorm:"type":
<code class="go">type A struct {
    gorm.Model
    Point *GeoPoint `gorm:"column:point;type:json"`
}</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan