为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 GORM 不能生成外键?

为什么 GORM 不能生成外键?

Go
沧海一幻觉 2022-05-05 18:13:19
我正在尝试在Password表上创建一个外键,该外键必须指向表id内的User列。但是当我尝试以下操作时,它不起作用。foreign key没有生成。user_id它只是在表中添加列名password。package schemaimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {    gorm.Model    FirstName string `gorm:"not null"`    LastName string `gorm:"not null"`    Email string `gorm:"type:varchar(100);unique_index"`    IsActive bool `gorm:"not null"`    IsVerified bool `gorm:"not null"`}type Password struct {    gorm.Model    Password string `gorm:"not null"`    UserId int `gorm:"not null"`    User User `gorm:"foreignkey:UserId;association_foreignkey:id"`}func SyncDB(db *gorm.DB) {    db.AutoMigrate(&User{})    db.AutoMigrate(&Password{})}我究竟做错了什么?我怎样才能在Password表内创建一个指向User表的外键?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

我认为你需要:


db.Model(&Password{}).AddForeignKey("user_id", "users(id)", "RESTRICT", "RESTRICT")

我把我的放在我的自动迁移语句之后


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

db.Model(&Password{}).AddForeignKey("user_id", "users(id)", "RESTRICT", "RESTRICT")

让我知道这是否有帮助。


查看完整回答
反对 回复 2022-05-05
?
慕容708150

TA贡献1831条经验 获得超4个赞

试试这个。


type Password struct {

   gorm.Model

   Password string `gorm:"not null"`

   UserId int `gorm:"not null"`

   User User `gorm:"foreignkey:UserId;references:id"`

}


查看完整回答
反对 回复 2022-05-05
  • 2 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信