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"`
}