GORM 不创建 ForeignKey 列
GORM doesn't create ForeignKey column
我正在尝试使用 Go 和 gorm 在 PostgreSQL 数据库上设置两个模型之间的关系。
这是我的代码,第一个模型:
Trip.go
package model
import "github.com/jinzhu/gorm"
// Trip models
type Trip struct {
gorm.Model
TripName string
TripDescription string
}
第二个模型:
TripKeyPoints.go
package model
import "github.com/jinzhu/gorm"
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID Trip
}
运行s 迁移和初始化所有文件的部分代码
db.DropTableIfExists(&User{}, &model.Trip{}, &model.TripKeyPoint{})
db.AutoMigrate(&User{}, &model.Trip{}, &model.TripKeyPoint{})
db.Model(&model.TripKeyPoint{}).AddForeignKey("trip_id", "trips(id)", "CASCADE", "CASCADE")
Users models 只是一个插件,但我把它留在了这个片段中。
由于很多测试,我把tables放在开头。
这是我在 运行 代码时收到的内容:
?[35m(C:/golang_lab/golang-gorm-tutorial/users.go:36)?[0m
?[33m[2019-09-21 18:40:34]?[0m ?[31;1m pq: column "trip_id" referenced in foreign key constraint does not exist ?[0m
是的,当我在 table trip_key_points 中登录 postgres 时,没有带有外键的列。
我需要做的,我想要一个TRIP对象,然后分配其他TripKeyPoints。
知道为什么吗?或者我如何强制 GORM 创建此列?
尝试像这样编辑您的结构:
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID Trip `gorm:"foreignkey:TripId"`
}
我明确定义了外键列:
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID uint `gorm:"TYPE:integer REFERENCES trips"`
}
我正在尝试使用 Go 和 gorm 在 PostgreSQL 数据库上设置两个模型之间的关系。
这是我的代码,第一个模型:
Trip.go
package model
import "github.com/jinzhu/gorm"
// Trip models
type Trip struct {
gorm.Model
TripName string
TripDescription string
}
第二个模型:
TripKeyPoints.go
package model
import "github.com/jinzhu/gorm"
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID Trip
}
运行s 迁移和初始化所有文件的部分代码
db.DropTableIfExists(&User{}, &model.Trip{}, &model.TripKeyPoint{})
db.AutoMigrate(&User{}, &model.Trip{}, &model.TripKeyPoint{})
db.Model(&model.TripKeyPoint{}).AddForeignKey("trip_id", "trips(id)", "CASCADE", "CASCADE")
Users models 只是一个插件,但我把它留在了这个片段中。 由于很多测试,我把tables放在开头。
这是我在 运行 代码时收到的内容:
?[35m(C:/golang_lab/golang-gorm-tutorial/users.go:36)?[0m
?[33m[2019-09-21 18:40:34]?[0m ?[31;1m pq: column "trip_id" referenced in foreign key constraint does not exist ?[0m
是的,当我在 table trip_key_points 中登录 postgres 时,没有带有外键的列。
我需要做的,我想要一个TRIP对象,然后分配其他TripKeyPoints。
知道为什么吗?或者我如何强制 GORM 创建此列?
尝试像这样编辑您的结构:
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID Trip `gorm:"foreignkey:TripId"`
}
我明确定义了外键列:
// TripKeyPoint models
type TripKeyPoint struct {
gorm.Model
KPName string
KPDescription string
TripID uint `gorm:"TYPE:integer REFERENCES trips"`
}