【发布时间】:2021-07-07 10:12:47
【问题描述】:
在 GORM 中,我希望能够仅通过使用一部分 ID 来更新模型的关联。
例如,当我有以下构造时:
type Library struct {
gorm.Model
Books []*Book
}
type Book struct {
ID uint
Library *Library
LibraryID uint
}
我可以像这样更新“书籍”关系:
books := []*Book{} // filled somewhere else
library := &Library{} // filled somwhere else
library.Books = books
db.Save(library)
或者像这样:
books := []*Book{} // filled somewhere else
library := &Library{} // filled somwhere else
db.
Model(library).
Association("Books").
Replace(books)
两种方式我都需要Books 的一部分,但我只有一部分 ID。我当然可以先加载书籍,然后将其传递给Replace 函数:
var ids []uint
books := []*Book{}
db.Find(&books, ids)
db.Model(&Library{}).Association("Books").Replace(books)
但我不想这样做,因为我知道可以发送单个查询来更新关联。
那么我该怎么做呢?
【问题讨论】: