iris使用xorm,外键不更新

发布于 2022-09-11 21:07:33 字数 1486 浏览 17 评论 0

用户表

idnamerole_id
1aaa11
2aaa22
3aaa31
4aaa43

角色表

idname
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

祁梦 2022-09-18 21:07:33

那就别用外键呗,真的不是什么好东西。
与其让数据库去控制一些事情,不如自己控制。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文