gorm many2many отношений не работают, невозможно предварительно загрузить поле - PullRequest
0 голосов
/ 10 июля 2020

Я создаю api, чтобы узнать больше из golang, и у меня проблема с отношениями многие ко многим между 2 объектами,

У меня 2 модели

type Patient struct {
    ID            uint            `json:"id" gorm:"primary_key"`
    Name          string          `json: "name"`
    Surname       string          `json: "surname"`
    Cellphone     int             `json: "cellphone"`
    Email         string          `json: "email"`
    Professionals []*Professional `json: "professionals" gorm:"many2many:professional_patient"`
}

и

type Professional struct {
    ID                uint       `json:"id" gorm:"primary_key"`
    Name              string     `json:"name"`
    Surname           string     `json:"surname"`
    Cellphone         int        `json:"cellphone"`
    AuxiliarCellphone int        `json:"auxiliarCellphone"`
    Email             string     `json:"email"`
    Patients          []*Patient `json:"patients" gorm:"many2many:professional_patient"`
}

и функции получения:

func GetAllPatients(c *gin.Context) {
    var patients []models.Patient

    internal.DB.Preload("Professionals").Find(&patients)

    c.JSON(http.StatusOK, gin.H{"data": patients})
}

и

func GetAllProfessionals(c *gin.Context) {
    var professionals []models.Professional

    internal.DB.Preload("Patients").Find(&professionals)

    c.JSON(http.StatusOK, gin.H{"data": professionals})
}

, когда я делаю запрос на получение в почтальоне для профессионалов, пациентов поле возвращает пустой массив (что я думаю, это нормально, потому что у них еще нет загруженных пациентов)

, но в случае пациентов они возвращают «ноль» в поле профессионалов и лог в vscode говорит:

[2020-07-10 02:04:52] can't preload field Professionals for models.Patient

Что я могу здесь сделать?

Большое спасибо

...