【发布时间】:2017-10-11 20:53:17
【问题描述】:
我正在使用 jinzhu/gorm 构建 Golang 后端,但在尝试建立两个表之间的关系时遇到了一些麻烦,例如Items 和 Manufacturers 使用外键。
我正在遵循jinzhu.me/gorm/models 的步骤,但老实说,我发现自己对手动编写表格等更直接的方法感到困惑,例如,使用go pq。
item.go:
package model
import "github.com/jinzhu/gorm"
type Item struct {
gorm.Model
Item string `gorm:"primary_key"`
Manufacturer Manufacturer `gorm:"ForeignKey:Name"`
}
manufacturer.go:
package model
import "github.com/jinzhu/gorm"
type Manufacturer struct {
gorm.Model
Name string `gorm:"primary_key"`
}
我没有收到任何错误或警告。检查我的表时,我注意到没有创建相关性。项目没有制造商字段。
到目前为止我尝试了什么:
- 未明确写入
gorm:"ForeignKey:Name",因为Manufacturer字段已经是Manufacturer - 写信
gorm:"ForeignKey:Name;AssociationForeignKey:Name" - 手动将它们与
db.Model(&model.Item{}).Related(&model.Manufacturer{})关联 - 手动将它们与
db.Model(&model.Item{}).Related(&model.Manufacturer{}, "Manufacturer")关联 - 手动将它们与
db.Model("items").Related("manufacturers")关联。即使模型的名称是单数,它们也会在 Postgresql 上使用此名称创建。
编辑:
尝试类似的东西
type Item struct {
Item string `gorm:"primary_key"`
Manufacturer Manufacturer
ManufacturerID int
}
type Manufacturer struct {
ID uint
Name string
}
导致相同的结果。没有创建外键,我可以使用不存在的 Manufacturer 插入新项目。
我做错了什么?我错过了什么吗?
【问题讨论】:
标签: postgresql go go-gorm