beego之orm一对一关联查询

models.go

import (
   "github.com/astaxie/beego/orm"
)

type User struct {
   Id          int
   Name    string
   Profile *Profile `orm:"rel(one)"` // OneToOne relation
}

type Profile struct {
   Id     int
   Age  int
   //User *User `orm:"reverse(one)"` // 设置反向关系(可选)
}

func init() {
   // 需要在 init 中注册定义的 model
   orm.RegisterModel(new(User), new(Profile))
}

index.go文件源码

package controllers
import (
   "fmt"
   "quickstart/models"
   "github.com/astaxie/beego"
   "github.com/astaxie/beego/orm"
   _ "github.com/go-sql-driver/mysql"
)

type IndexController struct {
   beego.Controller
}



func (c *IndexController) Index() {

   o := orm.NewOrm()
   o.Using("default")

   var user =  models.User{}
   qs :=   o.QueryTable("user")
   fmt.Println(qs)
   err := qs.Filter("id", "3").RelatedSel().One(&user)
   //err := o.QueryTable("user").Filter("id", "2").Limit(1).One(&user)
   //o.LoadRelated(profile,"User")
   fmt.Println(user.Id)   //结果为2
   
   if err == nil {
      //for _, v := range user {
         fmt.Println(user.Name)        //结果为tom2
      fmt.Println(user.Profile.Age)    //结果为32
      //}
   }

   c.Data["Website"] = "beego.me3344"
   c.Data["Email"] = "astaxie@gmail.com1122"

   c.TplName = "myindex.tpl"
}

func init() {

   // 注册驱动
   orm.RegisterDriver("mysql", orm.DRMySQL)
   // 注册默认数据库
   // 我的mysql的root用户密码为tom,打算把数据表建立在名为test数据库里
   // 备注:此处第一个参数必须设置为“default”(因为我现在只有一个数据库),否则编译报错说:必须有一个注册DB的别名为 default
   orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/godb?charset=utf8")
}

两个MYSQL数据表:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(60) DEFAULT NULL,
  `profile_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

CREATE TABLE `profile` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值