最近在一个项目中遇到一个需要做外键关联查询的字段,通过beego官网文档发现,beego也支持这种关联关系,例如我的数据库中有userinfo和role两个表,userinfo用于存储用户信息,role用于存储用户的角色,其中userinfo表中的roleid关联role主键id,定义的struct如下:
type Userinfo struct {
Id int
Role *Role `orm:"column(roleid);rel(one)"`
NickName string `orm:"column(nickname)"`
UserName string `orm:"column(username)"`
}
Userinfo中定义Role指针类型的struct,后面也注释了"rel(one)"表明是一对一关系。
type Role struct {
Id int
Grade int `orm:"column(grade)"`
RightContent string `orm:"column(rightcontent)"`
}
Role里面就是一个正常的struct,可以指定也可以不指定关系,如果要指定的话,可以注释下"rel(fk)",表明是一对多关系,因为一个Role可能对应多个User。
按照以往移动开发的经验,我们会认为此处我们去数据库读取Userinfo信息,Role字段就也会读取出来,实际上beego在Read函数上没有这样的处理,官网也说明了,不管是普通的Read还是高级查询的All和One,都只会有默认值,需要自己再去根据Id查询一次才会有值,这一点需要特别注意。
无回应:“Beego学习-orm中struct嵌套struct查询返回默认值问题”