首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用GORM存储嵌入式结构?

如何用GORM存储嵌入式结构?
EN

Stack Overflow用户
提问于 2015-02-13 23:29:53
回答 4查看 6.2K关注 0票数 10

如果我有这样的类型,如何使用GORM存储嵌入式结构

代码语言:javascript
运行
复制
type A struct {
    point GeoPoint
}

type GeoPoint struct {
    Lat float64
    Lon float64
}

GORM尝试将其添加到新表中,但我想将其添加为另一个字段。

如何做到这一点?

EN

Stack Overflow用户

发布于 2019-01-29 16:10:20

首先,使用gorm时,您永远不能定义小写的第一个字母字段。

如果您确保GeoPoint链接为辅助,您可以使用ForeingKey标记,如,确保Id是表A的主键。

代码语言:javascript
运行
复制
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)
}

如果不是通过主键链接的话。您可以使用像这样的中间件

代码语言:javascript
运行
复制
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)
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28503001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档