我有類似GORM的示例many2many結構:Golang 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)
比方說,我創建了一個用戶,它有兩個相關的語言。
我從數據庫中獲取用戶記錄,並從用戶的語言數組中刪除一種語言。然後用gorm:save_associations設置爲true來保存用戶。
我希望GORM刪除將用戶關聯到該語言的記錄(在GORM管理的關聯表中)。但是,它不會被刪除。這是預期的嗎?
是否可以通過從用戶記錄的語言列表中刪除一種語言,然後保存用戶來刪除許多關聯記錄?如果不是,GORM應該如何實現?
更新
我找到了解決這個問題,但不知道它的做到這一點的最好辦法。我存儲當前的語言,清除所有關聯,然後添加語言,然後保存。
languages := user.Languages
DB.Model(&user).Association("Languages").Clear()
user.Languages = languages
謝謝亞歷克斯。我在gorm單元測試中看到了這種方法。儘管如此,它並不能滿足我的要求。我需要從前端回發包含更新語言列表的修改後的用戶。我不知道需要刪除的特定語言。 –
我使用此c.DB.Model(&user).Association(「Roles」)。Delete(user.Roles)其中user.Roles是角色數組,它刪除角色和用戶之間的所有關聯 – Alex