使用GORM进行Golang的一对一关系映射

时间:2017-02-07 07:18:35

标签: mysql go go-gorm

我试图了解GORM如何与MySQL进行一对一的关系映射。我有2个结构:

type User struct {
    Id              uint   `gorm:"AUTO_INCREMENT"`
    FirstName       string `gorm:"column:first_name"`
    LastName        string `gorm:"column:last_name"`
    EncryptedUserId string `gorm:"size:255"`
    Email           string `gorm:"not null;unique"`
    Password        string `gorm:"not null;unique"`
    CreatedAt       int64  `gorm:"type(timestamp)"`
}

type UserSession struct {
    Id           uint `gorm:"AUTO_INCREMENT"`
    UserId       User 
    SessionToken string `gorm:"column:session_token"`
    CreatedAt    int64  `gorm:"type(timestamp)"`
}

UserUserSession分享一对一的关系。但是,当运行上面的代码时,不会创建UserId表的UserSession列。即使在指定外键约束gorm:"ForeignKey:Id"之后 结果是一样的。为什么以上代码不起作用?结构定义中是否缺少任何内容?

2 个答案:

答案 0 :(得分:0)

我不能评论你的问题所以我会在这里问: 您是否以任何方式迁移架构:

db.AutoMigrate(&User{}, &UserSession{})

? 如果你这样做,你应该在日志中得到一些详细的错误,这可能对你有用。

答案 1 :(得分:0)

我设法获得类似工作的方式是这样的。

type UserSession struct {
    Id           uint `gorm:"AUTO_INCREMENT"`
    UserId       uint
    User         User
    SessionToken string `gorm:"column:session_token"`
    CreatedAt    int64  `gorm:"type(timestamp)"`
}