文档章节

beego 中使用关联查询( join 查询)

阿桂1989
 阿桂1989
发布于 2018/07/26 12:01
字数 683
阅读 85
收藏 0

beego 中使用关联查询( join 查询)

  1. 文档所在网址:这里
//使用实例:
article:=new(Article)
num,err:= o.QueryTable("go_article").RelatedSel().All(&article)

  1. 但直接使用 RelatedSel() 是不行,还必须先在 model中定义:
type User struct {
    Id int
    Name string
    Age int
}
type Article stuct {
    Id int
    Title string
    Content string
    User *User `orm:"rel(fk)"` //这样写,默认在Article中应该有一个user_id的字段,如果没有,通过beego自动建表的话,它会生成;如果是手动建表,记得把user_id 这个字段加上去
}

定义表字段为"rel(fk)",即外键,要定义其它类型的,请看文档。

  1. 命令行自动建表:
orm.RunCommand()  //main函数或init函数中需要加这行代码,否则不能自动建表
go build main.go #先在命令行中执行这句,会生成main.exe文件

./main orm syncdb -h #-h会提示可用的参数

./main orm syncdb -v #建表的同时会显示建表的sql语句

如果使用自动建表,建议不要像上边一样直接写int,string,具体字段字段的方法,见 文档

其实我使用命令行建表最主要的目的是想知道 Article 中的 User 会生成什么字段名,结果就是 user_id,且与你 User 对应表名的前缀没有关系

  1. 疑问:

4.1 RelatedSel()可以选择“字段名” RelatedSel("user") 其实只是选择“表名”(实际也不是表名,而是 struct 中对应字段的小写),只有当一个 model 中使用了多个 rel 字段的时候才有意义。但怎么选择关联的 user 表中的指定字段?

4.2 RelatedSel()默认应该是 inner join,但我希望是 left join ,应该怎么写?

4.3 我想看到每次执行数据库操作时使用的 sql 语句,怎么查看?

  1. 一点感慨:

个人觉得 beego 自带的 orm 其实挺不好用的,有些概念也很不理解。 作为一个经常写 ThinkPHP 3.2 的码农,使用其它框架的 orm 的时候真的觉得太麻烦。 但话说 orm 到底有什么优势?其实我是一直不理解的,tp3.2 操作数据库的方法真正好用的不是它的 orm,而是它的连贯操作写起来真的很舒服。

其实 beego 的作者也做过一个独立的 orm 用法和 tp3.2 也还是有点像的。

但 github 中能搜到了 star 最多的 go orm 应该是 gorm ,看文档,发现它的用法其实与 tp3.2 的挺像的,我还是比较推荐使用 gorm 的。

© 著作权归作者所有

阿桂1989
粉丝 4
博文 51
码字总数 32224
作品 0
深圳
程序员
私信 提问
beego 关联查询 RelatedSel 怎样才能用LEFT JOIN查询而不是INNER JOIN

再beego文档中有这段说明如下: // 对设置 null 属性的 Field 将使用 LEFT OUTER JOIN 为什么我将设置为null,查询还是 INNER JOIN 而不是 LEFT JOIN 有大神可以解答下吗...

天佑我儿
2015/10/30
2.6K
0
beego 0.9.0 版本发布,Go 应用框架

经过大半个月的努力,beego又改进了很多东西,这一次的主要改动如下: 1、beego的官方网站上线了,里面有较为丰富的文档供大家入门:http://beego.me 2、更加智能化的路由功能,支持AutoRou...

astaxie
2013/08/14
3.6K
34
Beego Models 之 一

模型(Models)- beego ORM 原文 beego ORM 是一个强大的 Go 语言 ORM 框架。她的灵感主要来自 Django ORM 和 SQLAlchemy。 目前该框架仍处于开发阶段,可能发生任何导致不兼容的改动。 已支...

若与
2018/07/25
0
0
hibernate fetch属性

Hibernate的fetch="join"和fetch="select" 的一点分析 fetch参数指定了关联对象抓取的方式是select查询还是join查询,select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每...

zdatbit
2016/07/18
14
0
PHP面试之复杂MySQL语句的编写

真题 有A(id,sex, par, cl, c2)、B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中。 MySQL的关联update操...

openoter
2018/04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据结构与算法

线性结构 数组 链表 树 二分查找 用数组表示 二叉树 二叉树可以用链表表示 二叉树的遍历分递归和非递归方式; 递归分为前序遍历、中序遍历和后序遍历; 非递归可以使用堆栈方式和队列方式实现...

铲平王
16分钟前
0
0
这是一份完整的Python魔术方法教程

在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,但是对于官...

编程资源库
16分钟前
0
0
JavaScript深入浅出第2课:函数是一等公民是什么意思呢?

摘要: 听起来很炫酷的一等公民是啥? 《JavaScript深入浅出》系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函数是一等公民是什么意思呢? 看...

Fundebug
17分钟前
0
0
Google 出品的 Java 编码规范,强烈推荐,权威又科学!

原文:google.github.io/styleguide/javaguide.html 译者:Hawstein 来源:hawstein.com/2014/01/20/google-java-style/ 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文...

Java技术栈
19分钟前
0
0
Consul注册中心常用的API

问题 在使用Consul注册中心的过程中,涉及到服务注册,服务注销,服务列表查询,检查点列表查询,检查点注销等等Http的API。 Consul Http API 服务注册接口 请求方式:PUT 请求URL:http://...

亚林瓜子
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部