Postgresql Gorm与关系
我对Golang是新手,对Gorm更是如此。我正试图建立一对多的关系。基本上只有一个股票代码和许多股票数据。一切都很好,只是我不能让模型的关系继续下去。我只需要一点提示,告诉我如何进行最佳实践 梅因,加油Postgresql Gorm与关系,postgresql,go,go-gorm,Postgresql,Go,Go Gorm,我对Golang是新手,对Gorm更是如此。我正试图建立一对多的关系。基本上只有一个股票代码和许多股票数据。一切都很好,只是我不能让模型的关系继续下去。我只需要一点提示,告诉我如何进行最佳实践 梅因,加油 package main import ( "github.com/jinzhu/gorm" "github.com/khwerhahn/quoteworker/common" "github.com/khwerhahn/quoteworker/tickerdata"
package main
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
"github.com/khwerhahn/quoteworker/tickerdata"
"github.com/khwerhahn/quoteworker/ticker"
)
// Migrate database
func Migrate(db *gorm.DB) {
ticker.AutoMigrate()
tickerdata.AutoMigrate()
}
func main() {
db := common.Init()
Migrate(db)
defer db.Close()
//// more code....
}
存在于它自己的文件和包中。
股票代码的model.go
package ticker
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
)
type TickerModel struct {
gorm.Model
Name string `gorm:"column:name;unique_index"`
Symbol string `gorm:"column:symbol;unique_index"`
}
// AutoMigrate the schema of database if needed
func AutoMigrate() {
db := common.GetDB()
db.AutoMigrate(&TickerModel{})
}
存在于它自己的文件和包中。
model.go获取tickerdata
package tickerdata
import (
"github.com/jinzhu/gorm"
"github.com/khwerhahn/quoteworker/common"
"github.com/khwerhahn/quoteworker/ticker"
)
type TickerDataModel struct {
gorm.Model
Rank int `gorm:"column:rank"`
// left out some stuff....
TickerModel ticker.TickerModel
TickerModelID uint `gorm:"column:tickerId"`
}
// AutoMigrate the schema of database if needed
func AutoMigrate() {
db := common.GetDB()
db.AutoMigrate(&TickerDataModel{})
}
Thx参见章节
我假设TickerModel有许多TickerDataModel。下面的模型设置应该可以做到这一点
type TickerModel struct {
gorm.Model
Name string
Symbol string
TickerData []tickerdata.TickerDataModel
}
type TickerDataModel struct {
gorm.Model
Rank int
TickerModelID uint
}
与…建立关系
使用加载TickerData切片中的TickerModels和TickerDataModels
使它起作用的解决方案
tickerModel := TickerModel{
Name: "foo",
Symbol: "bar",
TickerData: []TickerDataModel{
{Rank: "1"},
{Rank: "2"},
},
}
db.Create(&tickerModel)
db.Preload("TickerData").Find(&tickerModels)
db.Model(& TickerDataModel{}).AddForeignKey("ticker_id", "tickers(id)", "RESTRICT", "RESTRICT")