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)
}
0
你可以试试:
type A struct {
point GeoPoint `gorm:"embedded"`
}
3 回答
我不熟悉Gorm,但是使用 sqlx ,您需要实现sql.Scanner和sql.Valuer接口,以允许将数据转换为postgres
point
类型 . 下面的代码不会检查错误,因此需要进行一些调整 .https://play.golang.org/p/2-Y-wSeAWnj
首先,使用gorm你永远不会把字段放到lowwer案例中 .
如果确保将GeoPoint链接为Aid,则可以使用ForeingKey标记,例如,MAKE SURE Id是表A的主键 .
如果没有通过主键链接 . 你可以使用像中间件
你可以试试: