gpt4 book ai didi

rest - 用 gorms 和 many2many 创造

转载 作者:数据小太阳 更新时间:2023-10-29 03:20:03 27 4
gpt4 key购买 nike

我有以下型号

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关系?

最佳答案

Gorm 具有自动保存关联及其从结构中引用的功能。在您的情况下,您需要传递正确的 JSON 对象,例如,如果您传递:

{
"Name": "EN",
"Users": [
{
"ID": 1
}
]
}

Gorm 将创建名称为“EN”的新语言,并通过在 user_language 表中创建新行将其与 id 1 找到的用户行连接起来。

阅读有关 Gorm 协会的更多信息:http://gorm.io/docs/associations.html

关于rest - 用 gorms 和 many2many 创造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55431152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com