Как работать со многими отношениями в горм?

import (
    "gorm.io/gorm"
    "gorm.io/driver/postgres"
)

type School struct {
    gorm.Model
    Students        []Student      `json:"students"`
}

type Student struct {
    gorm.Model
    Name            string         `json:"name"`
}

func init() {
    //connect to db first
    conn, err := gorm.Open(postgres.New(postgres.Config{
        DSN:                  dbUri,
        PreferSimpleProtocol: true,
    }), &gorm.Config{})
    if err != nil {
        log.Fatal(err)
    }

    db = conn
    db.AutoMigrate(&Student{}, &School{})
}

Создавайте структуры, и автоматизация их выдаёт ошибку. Вы знаете, почему это так? Также, как вы работаете со многими отношениями в gorm, какие данные он создает в postgres?

Ошибка - необходимо определить допустимый внешний ключ для отношений или необходимо реализовать интерфейс Valuer / Scanner.


person Prashant Raj    schedule 15.04.2021    source источник


Ответы (1)


Вам нужно добавить поле SchoolID к вашему Student. См. документацию здесь для полного использования.

type Student struct {
    gorm.Model
    SchoolID        uint
    Name            string         `json:"name"`
}

Чтобы ответить на вторую часть, он создаст для вас две таблицы. Школы и студенты. У учащихся будет внешний ключ, указывающий на идентификатор школы. Я бы прочитал документы, чтобы узнать, как это работает.

person Christian    schedule 15.04.2021
comment
Спасибо, @Christian! Я думал, что это создаст массив идентификаторов учеников в самой школьной таблице. - person Prashant Raj; 15.04.2021