Почему внешний ключ не генерируется с помощью GORM? - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать внешний ключ для таблицы Password, который должен указывать на столбец id в таблице User. Но, как я попробую следующее, это не работает. foreign key не генерируется. Он просто добавляет имя столбца user_id в таблицу password.

package schema

import (
"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?

1 Ответ

0 голосов
/ 28 января 2020

Я думаю, вам нужно:

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

Я поставил свой после моего оператора автопереноса примерно так:

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

Дайте мне знать, если это поможет.

...