首頁  >  文章  >  後端開發  >  如何將 GORM 中的嵌入式結構作為單一實體儲存?

如何將 GORM 中的嵌入式結構作為單一實體儲存?

Susan Sarandon
Susan Sarandon原創
2024-11-02 22:04:30863瀏覽

How to Store Embedded Structs in GORM as a Single Entity?

在GORM 中合併嵌入式結構

處理以下類型時,使用GORM 儲存嵌入式結構會帶來挑戰:

<code class="go">type A struct {
    point GeoPoint
}

type GeoPoint struct {
    Lat float64
    Lon float64
}</code>

預設情況下, GORM 嘗試為嵌入的結構GeoPoint 建立一個單獨的表。但是,要將其添加為父結構A 中的字段,請考慮以下受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>

此方法允許對父結構中的嵌入式結構進行無縫編組和解群組,確保它作為單一實體從資料庫中儲存和檢索。

以上是如何將 GORM 中的嵌入式結構作為單一實體儲存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn