gorm many2many и дополнительные поля в таблице ассоциаций

У меня есть ассоциация many2many (используется для возврата JSON). В модели заявлено:

// models/school.go
type School struct {
    ID                int      `gorm:"primary_key"`
    Name              string `gorm:"not null"`
    Accreditations    []Accreditation `gorm:"many2many:school_accreditation;"` 
}

Это работает хорошо. У меня ассоциация вернулась в json. Проблема в том, что у меня есть дополнительное поле в school_accreditation таблице, но оно не включено в ответ.

Я попытался объявить модель ассоциации, подобную предложенной в этом ответе:

// models/schoolAccreditation.go
package models

import "time"

// many to many
type SchoolAccreditation struct {
    StartedAt time.Time `gorm:"not null"`
}

Но пока не работает. Есть ли какие-то дополнительные настройки, которые нужно объявить? Или доработать?


person COil    schedule 26.08.2019    source источник
comment
Проблема в том, что у меня есть дополнительное поле в таблице school_accreditation, но оно включено в ответ. Это опечатка? Или вы говорите, что хотите исключить поле из json? Если да, то для этого можно использовать тег поля json:"-".   -  person mkopriva    schedule 26.08.2019
comment
Извините, я изменил, он не включен. Я хочу, чтобы в ответе json появилось дополнительное поле. Спасибо, что указали на опечатку. :)   -  person COil    schedule 26.08.2019


Ответы (1)


Отвечая самому себе, я добавил поле в связанной модели как «игнорировать», и оно работает, столбец автоматически извлекается из таблицы ассоциаций.

type Accreditation struct {
    // "accreditation" table
    ID          int `gorm:"primary_key"`
    Name        string
    Description string
    // "school_accreditation table", so the field is set as ignore with "-"
    EndAt       time.Time `gorm:"-"`
}
person COil    schedule 27.08.2019