我有以下型号
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
管理创建?
答案 0 :(得分:0)
Gorm具有从结构自动保存关联及其引用的功能。在您的情况下,您需要传递正确的JSON对象,例如,如果传递:
{
"Name": "EN",
"Users": [
{
"ID": 1
}
]
}
Gorm将创建名称为“ EN”的新语言,并通过在user_language表中创建新行将其与ID为1的用户行合并。
了解有关Gorm关联的更多信息:http://gorm.io/docs/associations.html