Внешний ключ и ассоциация в gorm созданы неправильно

Я пытался создать модели Association ForeignKey на PostgreSQL для человека, который принадлежит Data, а данные принадлежат Person, это моя структура

type (
    Data struct {
        ID          uint `gorm:"auto_increment"`
        PersonID    uint
        Person      *Person `gorm:"foreignkey:id;association_foreignkey:PersonID"`
        Birthday    *time.Time
        Salary      float64 `gorm:"type:money"`
    }

    Person struct {
        gorm.Model
        Email    string `gorm:"type:varchar(100);unique_index;not null"`
        Password string `gorm:"type:varchar(100);not null"`
        Role     string `gorm:"type:varchar(30);not null"`
        DataID   uint
        Data     *Data `gorm:"foreignkey:id;association_foreignkey:DataID"`
    }
)

Я хочу, чтобы в таблице данных Person_id был внешний ключ из таблицы Person, а также таблица Person имеет Data_id, чтобы быть внешним ключом из таблицы данных после того, как я увижу на диаграмме ER на моем DBeaver, они не созданы, как я хочу :( На диаграмме ER нет никаких отношений, я уверен, что моя ассоциация неверна, может ли кто-нибудь дать мне информацию, чтобы исправить это?


person temps hd    schedule 13.09.2019    source источник


Ответы (1)


Вы можете использовать для этого функции gorm при автоматическом переносе базы данных.

db.Model(&Data{}).AddForeignKey("person", "person(id)", "NO ACTION", "NO ACTION")
db.Model(&Person{}).AddForeignKey("data", "data(id)", "NO ACTION", "NO ACTION")

Вы также можете проверить это: Gorm Migration

person v4570    schedule 13.11.2019