Gorm 如何在保存期间省略属于 may_to_many 关系一部分的关联

问题描述 投票:0回答:1

我正在使用 GORM 连接到 mysql DB 并拥有一个在两个表之间具有多对多关系的模式。当我尝试保存定义关系的实体时,它还会尝试插入作为关联一部分的其他实体。

**My Model:**
type Language struct {
  gorm.Model
  Name string
}

type User struct {
  gorm.Model
  Name string
  Languages []Language `gorm:"many2many:user_languages;"`
}

**Code sample:**

var languages []Language
err := db.Find(&languages).Error
if err != nil { panic(err) }

user := User{Name: "dexter", Languages: languages}
err = db.Save(&user).Error
if err != nil { panic(err) }

输出 上面的代码尝试再次插入语言表。因此,它会触发语言模型的 afterCreate 钩子,这是预期之外的。

插入

languages
(
created_at
,
updated_at
,
deleted_at
,
name
,
id
) 值 ('2024-01-22 19:44:37.247','2024-01-22 19: 44:37.247','eng',55),('2024-01-22 19:44:37.247','2024-01-22 19:44:37.247','hin',57) 关于重复密钥更新
 id
=
id

如何避免

insert into languages
并跳过 afterCreate 钩子。

go go-gorm
1个回答
0
投票

您应该指定表格: var languages []语言 err := db**.Table("TableOfLanguages")**.Find(&languages).Error

© www.soinside.com 2019 - 2024. All rights reserved.