如何解决没有得到基于 ID 的删除用户记录
我正在使用 Go 与来自用户和角色表的 Gorm 多对多关联。
type User struct {
//gorm.Model
ID int64 `json:"id" gorm:"primary_key"`
Active sql.NullString ` json:"active " `
Email string `json:"email"`
FullName string `json:"full_name"`
Password string `json:"password"`
Username string `json:"username"`
Groups string `json:"groups"`
Otp string `json:"otp"`
CreatedTimeStamp time.Time `json:"created_time_stamp"`
UpdateTimeStamp time.Time `json:"update_time_stamp"`
LastLogin time.Time `json:"last_login"`
UserCount uint `json:"user_count" `
Roles []Role `gorm:"many2many:user_roles;"`
}
type Role struct {
//gorm.Model
ID int64 `json:"id" gorm:"primary_key"`
Name string `json:"name"`
Users []User `gorm:"many2many:user_roles"`
}
var roles []Role
db.Model(Role{}).Where("Name = ?","ROLE_ADMIN").Take(&roles)
newUser := &User{
Email: user.Email,FullName: user.FullName,Username: user.Username,Groups: groupCreation(user.Username),Password: EncodePassword(user.Password),CreatedTimeStamp: time.Now(),UpdateTimeStamp: time.Now(),LastLogin: time.Now(),Roles: roles
}
db.Save(newUser)
**db.Model(&user).Association("Role").Delete(&newUser)**
一旦执行了最后一条语句,但没有从表用户和用户角色中获得删除(无影响)记录。 请告诉我什么是问题。
解决方法
此代码:
db.Model(&user).Association("Role").Delete(&newUser)
来自 Gorm 文档:
Remove the relationship between source & arguments if exists,only delete the reference,won’t delete those objects from DB.
您需要使用 Delete with Select
here
所以实际上应该是:
db.Select("Role").Delete(&newUser)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。