Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyimpan Struktur Terbenam dalam GORM dalam Jadual yang Sama dengan Struktur Induk?

Bagaimana untuk Menyimpan Struktur Terbenam dalam GORM dalam Jadual yang Sama dengan Struktur Induk?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 06:08:02716semak imbas

How to Store Embedded Structs in GORM within the Same Table as the Parent Struct?

Membenamkan Struktur dalam GORM untuk Penyimpanan Data

Dalam GORM, pengendalian struct terbenam boleh menjadi satu cabaran apabila anda ingin menyimpan struct bersarang dalam jadual yang sama dengan struct induk. Secara lalai, GORM menganggap struktur terbenam sebagai entiti berasingan dan cuba mencipta jadual baharu untuknya. Walau bagaimanapun, anda mungkin memilih untuk memasukkan struct terbenam sebagai medan tambahan dalam jadual struct induk.

Penyelesaian

Satu penyelesaian berkesan melibatkan pelaksanaan Scan() dan Nilai () kaedah untuk jenis tersuai yang mewakili tatasusunan struct terbenam. Kaedah ini membenarkan GORM mensiri dan menyahsiri struct terbenam ke dan dari JSON, membolehkan penyimpanan dan pengambilan yang lancar.

Sebagai ilustrasi, pertimbangkan contoh berikut:

<code class="go">type Child struct {
    Lat float64
    Lng float64
}

type ChildArray []Children

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
}</code>

Di sini, tersuai ChildArray jenis mewakili tatasusunan terbenam struct Kanak-kanak. Ia melaksanakan kaedah Imbas() dan Nilai() untuk mengendalikan pensirilan dan penyahserilangan JSON.

Untuk membenamkan dan menyimpan ChildArray dalam struct Induk, anda boleh mentakrifkan model seperti berikut:

<code class="go">type Parent struct {
    *gorm.Model
    Childrens ChildArray `gorm:"column:childrens;type:longtext"`
}</code>

Dengan konfigurasi ini, GORM mengiktiraf medan Childrens sebagai jenis tersuai dan secara automatik mensiri dan menyahsiri struct Child terbenam ke dan dari JSON apabila berinteraksi dengan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Struktur Terbenam dalam GORM dalam Jadual yang Sama dengan Struktur Induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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