如果我有这样的类型,如何使用GORM存储嵌入式结构
type A struct {
point GeoPoint
}
type GeoPoint struct {
Lat float64
Lon float64
}
GORM尝试将其添加到新表中,但我想将其添加为另一个字段。
如何做到这一点?
发布于 2019-01-29 16:10:20
首先,使用gorm时,您永远不能定义小写的第一个字母字段。
如果您确保GeoPoint链接为辅助,您可以使用ForeingKey标记,如,确保Id是表A的主键。
type A struct {
Id int `gorm:"column:"id""`
Point GeoPoint `gorm:"column:geo_point;ForeignKey:OrderId"`
}
type GeoPoint struct {
Aid int
Lat float64
Lon float64
}
func main(){
...
...
var as []A
if e:=db.Model(&A{}).Find(&as).Error;e!=nil{
handle(e)
}
fmt.Println(as)
}
如果不是通过主键链接的话。您可以使用像这样的中间件
type A struct {
Id int `gorm:"column:"id""`
Point GeoPoint `gorm:"column:geo_point"`
}
func (a *A) AfterFind()error{
return db.Model(&GeoPoint{}).First(&(a.Point)).Error
}
type GeoPoint struct {
Aid int
Lat float64
Lon float64
}
func main(){
...
...
var as []A
if e:=db.Model(&A{}).Find(&as).Error;e!=nil{
handle(e)
}
fmt.Println(as)
}
https://stackoverflow.com/questions/28503001
复制相似问题