處理以下類型時,使用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中文網其他相關文章!