Golang Gorm:是否可以通过many2many关系删除记录?

我有一个类似于GORM的例子的many2many结构:

// User has and belongs to many languages, use `user_languages` as join table

type User struct {

gorm.Model

Languages []Language `gorm:"many2many:user_languages;"`

}

type Language struct {

gorm.Model

Name string

}

db.Model(&user).Related(&languages)

假设我创建了一个用户,它具有两种关联的语言。

我从数据库中获取用户记录,并从用户的Languages数组中删除一种语言。然后,将gorm:save_associations设置为true来保存用户。

我希望GORM删除将用户与该语言关联的记录(在GORM管理的关联表中)。但是,它不会被删除。这是预期的吗?

通过从用户记录的“语言”列表中删除一种语言然后保存用户,是否可以删除很多许多关联记录?如果不是,应如何在GORM中完成?

我找到了解决这个问题的方法,但是不确定这是最好的方法。我存储当前语言,清除所有关联,然后重新添加语言,然后保存。

languages := user.Languages

DB.Model(&user).Association("Languages").Clear()

user.Languages = languages

回答:

我找到了解决这个问题的方法,但是不确定这是最好的方法。我存储当前语言,清除所有关联,然后重新添加语言,然后保存。

languages := user.Languages 

DB.Model(&user).Association("Languages").Clear()

user.Languages = languages

以上是 Golang Gorm:是否可以通过many2many关系删除记录? 的全部内容, 来源链接: utcz.com/qa/421902.html

回到顶部