如何在 Gorm 中正确执行部分更新?
How to correctly perform partial updates in Gorm?
我有某种虚拟文件系统。文件夹列表,每个文件夹包含文件和ACL。
所以结构看起来像这样:
type Model struct {
ID uint `gorm:"primary_key" json:"id"`
}
type User struct {
Model
Name string
}
type Folder struct {
Model
Name string
}
type File struct {
Model
Name string
FolderID uint
Folder Folder
Acl []User `json:"acl" gorm:"many2many:file_acl"`
}
它来自前端,完全成熟JSON。它被解组了。
当我调用 Save(&file)
时接下来会发生什么,它正确地存储文件,在 file_acl
中创建记录。
它还会更新文件夹和用户。
我的问题来了 - 如何跳过那些依赖更新,但将自动生成的查询 update/insert 保留到 file_acl
table?
我想你可能想要 db.Set("gorm:save_associations", false).Save(...)
要防止级联更新,您应该使用 association_autoupdate
选项。
Db.Set("gorm:association_autoupdate", false).Save(&file)
我有某种虚拟文件系统。文件夹列表,每个文件夹包含文件和ACL。 所以结构看起来像这样:
type Model struct {
ID uint `gorm:"primary_key" json:"id"`
}
type User struct {
Model
Name string
}
type Folder struct {
Model
Name string
}
type File struct {
Model
Name string
FolderID uint
Folder Folder
Acl []User `json:"acl" gorm:"many2many:file_acl"`
}
它来自前端,完全成熟JSON。它被解组了。
当我调用 Save(&file)
时接下来会发生什么,它正确地存储文件,在 file_acl
中创建记录。
它还会更新文件夹和用户。
我的问题来了 - 如何跳过那些依赖更新,但将自动生成的查询 update/insert 保留到 file_acl
table?
我想你可能想要 db.Set("gorm:save_associations", false).Save(...)
要防止级联更新,您应该使用 association_autoupdate
选项。
Db.Set("gorm:association_autoupdate", false).Save(&file)