gpt4 book ai didi

postgresql - Gorm 和关系

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:54 24 4
gpt4 key购买 nike

我是 Golang 的新手,对 Gorm 更是如此。我正在尝试建立一对多的关系。基本上有一个股票代码和他的许多股票数据。一切都很好,除了我无法在模型上建立关系。我只需要一点关于如何做到这一点的提示(欢迎最佳实践)。

主.go

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 代码数据

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{})
}

谢谢

最佳答案

参见 http://jinzhu.me/gorm/associations.html#has-many 部分

我假设 TickerModel 有很多 TickerDataModel。以下模型设置应该可以解决问题。

type TickerModel struct {
gorm.Model
Name string
Symbol string
TickerData []tickerdata.TickerDataModel
}


type TickerDataModel struct {
gorm.Model
Rank int
TickerModelID uint
}

与 ( http://jinzhu.me/gorm/crud.html#associations) 建立关系

tickerModel := TickerModel{
Name: "foo",
Symbol: "bar",
TickerData: []TickerDataModel{
{Rank: "1"},
{Rank: "2"},
},
}

db.Create(&tickerModel)

使用 ( http://jinzhu.me/gorm/crud.html#preloading-eager-loading ) 在 TickerData slice 中加载 TickerModels 和 TickerDataModels

db.Preload("TickerData").Find(&tickerModels)

关于postgresql - Gorm 和关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47539442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com