gorm未在数据库架构中建立外键关系商店

gorm未在数据库架构中建立外键关系商店,go,orm,go-gorm,Go,Orm,Go Gorm,我有以下两种gorm型号 // Day is a corresponding day entry type Day struct { gorm.Model Dateday string `json:"dateday" gorm:"type:date;NOT NULL"` Nameday string `json:"nameday" gorm:"type:varchar(100);NOT NULL"` Something sq

我有以下两种
gorm
型号

// Day is a corresponding day entry
type Day struct {
    gorm.Model
    Dateday   string         `json:"dateday" gorm:"type:date;NOT NULL"`
    Nameday   string         `json:"nameday" gorm:"type:varchar(100);NOT NULL"`
    Something sql.NullString `json:"something"`
    Holyday   bool           `json:"holyday"`
}

type Week struct {
    gorm.Model
    Start Day
    End   Day
}
但是,在执行迁移之后

db.AutoMigrate(&Day{})
db.AutoMigrate(&Week{})
登录数据库并描述表
weeks

postgres-# \d+ weeks;
                                                          Table "public.weeks"
   Column   |           Type           | Collation | Nullable |              Default              | Storage | Stats target | Description
------------+--------------------------+-----------+----------+-----------------------------------+---------+--------------+-------------
 id         | integer                  |           | not null | nextval('weeks_id_seq'::regclass) | plain   |              |
 created_at | timestamp with time zone |           |          |                                   | plain   |              |
 updated_at | timestamp with time zone |           |          |                                   | plain   |              |
 deleted_at | timestamp with time zone |           |          |                                   | plain   |              |
Indexes:
    "weeks_pkey" PRIMARY KEY, btree (id)
    "idx_weeks_deleted_at" btree (deleted_at)
我没有看到
开始
/
结束
字段,该字段可能也是
表(确实存在)的外键


为什么会这样?

要设置一对一关系,还需要将id字段添加到结构中。默认情况下,您应该将其命名为
[YourFieldName]ID
,如果您想为ID字段使用其他名称,可以通过标记(请参阅)来完成,例如:

type Week struct {
    gorm.Model
    Start    Day
    End      Day `gorm:"foreignkey:EndRefer"`
    StartID  uint
    EndRefer uint
}

但请注意,
AutoMigrate
无法创建外键约束()。您必须自己设置。

谢谢。我看到这是一个非常长期的问题;作者声明在
v2
中解决了这个问题,但是如何显式导入
v2