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

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

Susan Sarandon
發布: 2024-11-02 22:04:30
原創
905 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板