当前位置: 首页 > 面试题库 >

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

禹昆
2023-03-14
问题内容

我有一个类似于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


 类似资料:
  • 我正在使用hibernate多对多的关联。我有3个表(STUDENT,COURSE和STUDENT_COURSE)。在3个表中,2个是主表,1个是提供关系的中间表。当记录从STUDENT中删除时,相应的映射将从Student_Course中删除。我的要求是它甚至应该从课程表中删除记录。考虑以下STUDENT_COURSE条目: 当从学生表中删除101时,上述表中的第一个条目被删除,但课程表中对应于

  • 我目前正在运行一个bash脚本,使用curl在Github上自动创建一个远程存储库。我想知道是否有任何方法也可以删除命令行上的远程Github存储库。任何帮助将不胜感激!

  • 问题内容: Java 是这里的关键。我需要能够删除文件,但是用户希望能够从回收站中“取消删除”。据我所知这是不可能的。有人知道吗? 问题答案: 由于各种原因,Windows 没有简单地对应于回收站的文件夹的概念。 正确的方法是使用JNI调用Windows API,并在结构中设置标志。 SHFileOperation文档 使用SHFileOperation复制文件的Java示例(同一文章中的“回收站

  • 在Pyspark中执行映射函数时,我经常希望删除映射函数失败的数据(在本例中,转换为xml)。我想知道在映射步骤中是否有一个干净的方法来实现这一点? 返回blank的明显解决方案仍然会在RDD中保留一个对象。 创建一个聪明的筛选器是浪费我的时间,而像try/except on这样的哑筛选器是浪费计算时间,因为我会对XML进行两次解析。

  • 考虑到Laravel指南中的基本示例有许多通过关系,我试图直接查询雄辩的、帖子类型为100的国家(只是一个例子)。 type_id是我的特例... 因此,我在country模型中创建了一个关系,通过用户创建了与帖子的关系。我想要实现的结果是列出一个国家,以及每个国家内由该国用户创建的帖子。 我能够以其他方式复制我想要实现的结果,但是我想知道为什么下面雄辩的查询没有返回预期的结果: 查询的返回是几个

  • 我计划开发一个基于web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP,并将它们发送到XMPP服务器。 在这种基于聊天的应用程序中使用WebSocket看起来很有希望,因为事件(或响应)可以异步传递。但是,如果我使用WebSocket作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是的话,URI、动词(GET、POST…)是怎样的,websocket消息中