首頁 > 後端開發 > Golang > 主體

如何將 GORM 中的嵌入結構儲存在與父結構相同的表中?

Patricia Arquette
發布: 2024-11-03 06:08:02
原創
784 人瀏覽過

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

在GORM 中嵌入結構體進行資料儲存

在GORM 中,當您想要將嵌套結構體儲存在其中時,處理嵌入結構體可能是一個挑戰與父結構相同的表。預設情況下,GORM 假定嵌入結構作為單獨的實體,並嘗試為它們建立一個新表。但是,您可能更願意將嵌入結構作為父結構表中的附加欄位包含在內。

解決方案

一個有效的解決方案涉及實作 Scan() 和 Value () 方法用於表示嵌入結構數組的自訂類型。這些方法允許 GORM 將嵌入式結構序列化為 JSON 或反序列化為 JSON,從而實現無縫儲存和檢索。

為了進行說明,請考慮以下範例:

<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>
登入後複製

此處,ChildArray 自訂type 表示嵌入的 Child 結構陣列。它實作了 Scan() 和 Value() 方法來處理 JSON 序列化和反序列化。

要將ChildArray 嵌入並儲存在Parent 結構中,您可以如下定義模型:

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

透過此配置,GORM 將Childrens 欄位識別為自訂類型,並在與資料庫互動時自動將嵌入的Child 結構與JSON 進行序列化和反序列化。

以上是如何將 GORM 中的嵌入結構儲存在與父結構相同的表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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