iris使用xorm,外键不更新
用户表
id | name | role_id |
---|---|---|
1 | aaa1 | 1 |
2 | aaa2 | 2 |
3 | aaa3 | 1 |
4 | aaa4 | 3 |
角色表
id | name |
---|---|
1 | 管理员 |
2 | 角色2 |
3 | 角色3 |
为了直观,省略部分代码
type User struct{
Id int64
Name string
Role *Role `json:"role" xorm:"'role_id' INT(11)"`//执行更新时,这个字段无法更新
}
type Role struct{
Id int64
Name string
}
创建用户
role:=Role{Id:3}
newUser:=User{
Id:5,
Name:"aaa6",
Role:role,
}
_,_:=engine.InsertOne(&newUser)
fmt.Println(newUser)//{5 aaa6 0xc0004e9a00}
创建用户成功,数据库里role_id
字段为3
更新用户
role:=Role{Id:2}
newUser:=User{
Id:5,
Name:"aaa6 update",
Role:role,
}
n,err:=engine.ID(5).Update(&newUser)
fmt.Println(n,err)// 1 nil
更新后,name
字段更新了,但role_id
字段并没有更新为2,仍为原来的3
暂时这么解决,如果有好方法求告知,谢谢。
type User struct {
Id int64
Name string
RoleId int64
Role *Role `xorm:"-"`
}
放弃了,才发现xorm
还不支持外键,好像只有一对一
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
那就别用外键呗,真的不是什么好东西。
与其让数据库去控制一些事情,不如自己控制。