From b8ef58947cb1715ce4a8c92a1db4a27cd9f98c9a Mon Sep 17 00:00:00 2001 From: vCaesar Date: Tue, 27 Dec 2016 20:01:56 +0800 Subject: [PATCH] Fix some err and delete some --- zh/05.5.md | 56 +++++++++++++++++------------------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/zh/05.5.md b/zh/05.5.md index a1c2d428..eabc2fec 100644 --- a/zh/05.5.md +++ b/zh/05.5.md @@ -160,7 +160,7 @@ func main() { SetMaxIdleConns 根据数据库的别名,设置数据库的最大空闲连接 -``Go +```Go orm.SetMaxIdleConns("default", 30) ``` @@ -349,26 +349,6 @@ beego orm的查询接口比较灵活,具体使用请看下面的例子 qs.Limit(10, 20) // LIMIT 10 OFFSET 20 注意跟SQL反过来的 ``` -例子3,获取全部数据 -```Go - - var everyone []User - err := orm.OrderBy("uid desc,username asc").FindAll(&everyone) -``` -上面这些里面里面我们看到一个函数Limit,他是用来控制查询结构条数的。 - -Limit:支持两个参数,第一个参数表示查询的条数,第二个参数表示读取数据的起始位置,默认为0。 - -OrderBy:这个函数用来进行查询排序,参数是需要排序的条件。 - -上面这些例子都是将获取的的数据直接映射成struct对象,如果我们只是想获取一些数据到map,以下方式可以实现: -```Go - - a, _ := orm.SetTable("User").SetPK("uid").Where(2).Select("uid,username").FindMap() -``` -上面和这个例子里面又出现了一个新的接口函数Select,这个函数用来指定需要查询多少个字段。默认为全部字段`*`。 - -FindMap()函数返回的是`[]map[string][]byte`类型,所以你需要自己作类型转换。 ## 删除数据 beedb提供了丰富的删除数据接口,请看下面的例子 @@ -381,29 +361,25 @@ beedb提供了丰富的删除数据接口,请看下面的例子 fmt.Println(num) } ``` -例子2,删除多条数据 -```Go - - //alluser就是上面定义的获取多条数据的slice - orm.DeleteAll(&alluser) -``` -例子3,根据sql删除数据 -```Go - - orm.SetTable("User").Where("uid>?", 3).DeleteRow() -``` +Delete 操作会对反向关系进行操作,此例中 Post 拥有一个到 User 的外键。删除 User 的时候。如果 on_delete 设置为默认的级联操作,将删除对应的 Post ## 关联查询 -目前beedb还不支持struct的关联关系,但是有些应用却需要用到连接查询,所以现在beedb提供了一个简陋的实现方案: +有些应用却需要用到连接查询,所以现在beego orm提供了一个简陋的实现方案: ```Go - a, _ := orm.SetTable("User").Join("LEFT", "userdeatail", "User.uid=userdeatail.uid").Where("User.uid=?", 1).Select("User.uid,User.username,userdeatail.profile").FindMap() -``` -上面代码中我们看到了一个新的接口Join函数,这个函数带有三个参数 + type Post struct { + Id int `orm:"auto"` + Title string `orm:"size(100)"` + User *User `orm:"rel(fk)"` + } + + var posts []*Post + qs := o.QueryTable("post") + num, err := qs.Filter("User__Name", "slene").All(&posts) + +``` +上面代码中我们看到了一个struct关联查询 -- 第一个参数可以是:INNER, LEFT, OUTER, CROSS等 -- 第二个参数表示连接的表 -- 第三个参数表示连接的条件 ## Group By和Having @@ -457,6 +433,8 @@ func (m *User) Query(name string) []User { } ``` +更多说明,请到[beego.me](https://beego.me) + ## 进一步的发展 目前beego orm已经获得了很多来自国内外用户的反馈,我目前也正在考虑支持更多数据库,接下来会在更多方面进行改进