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

Patricia Arquette
Lepaskan: 2024-11-03 06:08:02
asal
715 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!