typeUserstruct{IDuintUserIDuintRoleIDuintDeletedAtgorm.DeletedAt// any other field
// code1
Roles[]Role`gorm:"->"`// code2
UserRoles[]UserRole`gorm:"->"`}typeUserRolestruct{IDuintUserIDuintRoleIDuintDeletedAtgorm.DeletedAtRole*Role}typeRolestruct{IDuint// any other field
}funcquery(){varusers[]User// 这种情况下 无法对UserRole表进行软删除判断
db.Model(User{}).Preload("Roles").Find(&users)// 解决方案1. 不使用软删除
// 解决方案2. 两步Preload 不直接关联Role 实现如下
// db.Model(User{}).Preload("UserRoles.Role").Find(&users)
}
typeUserstruct{IDuintUserIDuintRoleIDuintDeletedAtgorm.DeletedAt// any other field
Roles[]Role`gorm:"->"`}typeUserRolestruct{IDuintUserIDuintRoleIDuint}typeRolestruct{IDuint// any other field
}funcquery(){varusers[]Userdb.Model(User{}).Preload("Roles").Find(&users)}
typeUserstruct{IDuintUserIDuintRoleIDuintDeletedAtgorm.DeletedAt// any other field
// code2
UserRoles[]UserRole`gorm:"->"`}typeUserRolestruct{IDuintUserIDuintRoleIDuintDeletedAtgorm.DeletedAtRole*Role}typeRolestruct{IDuint// any other field
}funcquery(){varusers[]Userdb.Model(User{}).Preload("UserRoles.Role").Find(&users)}