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 중국어 웹사이트의 기타 관련 기사를 참조하세요!