У меня есть следующие модели
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
Users []User `gorm:"many2many:user_languages;"`
}
и для создания языка я делаю:
func CreateLanguage(db *gorm.DB, w http.ResponseWriter, r *http.Request) {
language := models.Language{}
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&language); err != nil {
respondError(w, http.StatusBadRequest, err.Error())
return
}
defer r.Body.Close()
if err := db.Save(&language).Error; err != nil {
respondWithError(w, http.StatusInternalServerError, err.Error())
return
}
respondWithJSON(w, http.StatusCreated, language)
}
при проверке базы данных у меня таблица Language
заполнена созданным мною языком, но user_languages
не заполнена. Я думал, что gorm
отвечает за обновление промежуточной таблицы, когда вы пользуетесь gorm:"many2many:user_languages;"
, и движок выяснит, как управлять созданиями.
Итак, вопрос: как управлять созданием с помощью gorm
, когда у вас есть many2many
отношения?