go-gorm / gorm

The fantastic ORM library for Golang, aims to be developer friendly
https://gorm.io
MIT License
37.02k stars 3.94k forks source link

Preloaded association goes away when replacing with Omit #7271

Open apuatcfbd opened 2 weeks ago

apuatcfbd commented 2 weeks ago

GORM Playground Link

The issue is so trivial that (I think) a playground link is not required here.

The issue: Preloaded association goes away when replacing association with Omit('associationName.*')

For ex:

user := new(model.User)

// get user with groups
database.DB.Preload("Groups").Find(&user, userId)

// then create new groups for the user
groups := new([]model.Group)
// ... add group  like model.Group{ID: 1}

//Replace groups to sync with the selection, Also make sure if non-existing groups are provided, not to create them.
database.DB.Model(&user).Omit("Groups.*").Association("Groups").Replace(groups)

// now user.groups is gone
fmt.Printf("%#v", user.groups)

// following is the output
[]model.Group{
  model.Group{
      ID:0x1, // has only the id
      Name:"", 
      Description:"", 
      //... all empty
  }
}
github-actions[bot] commented 2 weeks ago

The issue has been automatically marked as stale as it missing playground pull request link, which is important to help others understand your issue effectively and make sure the issue hasn't been fixed on latest master, checkout https://github.com/go-gorm/playground for details. it will be closed in 30 days if no further activity occurs. if you are asking question, please use the Question template, most likely your question already answered https://github.com/go-gorm/gorm/issues or described in the document https://gorm.ioSearch Before Asking