Beego学习-orm中struct嵌套struct查询返回默认值问题

最近在一个项目中遇到一个需要做外键关联查询的字段,通过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还是高级查询的AllOne,都只会有默认值,需要自己再去根据Id查询一次才会有值,这一点需要特别注意。

标签:go, beego