一对多

**model ** ype User struct { Id int64 json:"id" Name string json:"name,omitempty" orm:"size(50)" Passwords string json:"passwords" orm:"size(32)" Baby []*Baby json:"baby" orm:"reverse(many)" } type Baby struct { Id int64 Name string json:"name" orm:"size(50)" User *User json:"user" orm:"rel(fk);index" }

数据库查询 o:= orm.NewOrm() o.QueryTable("tb_user").Filter("id" ,user.Id).One(user) o.LoadRelated(user,"Baby")

** 返回结果**

{ "id": 2, "name": "test", "passwords": "123456", "baby": [ { "Id": 1, "name": "慕青", "user": { "id": 2, "passwords": "" } }, { "Id": 2, "name": "木木", "user": { "id": 2, "passwords": "" } } ] }

多对多

models 表结构 // User table 用户表,与用户组表多对多关系 type User struct { Id int UserName string orm:"unique" Department string Email string Groups []*Group orm:"rel(m2m)" //多对多 } // Group table 用户组表,与用户表多对多关系 type Group struct { Id int GroupName string orm:"unique" Introduce string Users []*User orm:"reverse(many)" //反向多对多 }

添加 o := orm.NewOrm() u1 := User{UserName: "zhangszan"} u2 := User{UserName: "lisi"} g1 := Group{GroupName: "g1"} g2 := Group{GroupName: "g2"} o.InsertMulti(2, []User{u1, u2}) o.InsertMulti(2, []Group{g1, g2}) m2mu1 := o.QueryM2M(&u1, "Groups") m2mu2 := o.QueryM2M(&u2, "Groups") m2mu1.Add(&g1) m2mu1.Add(&g2) m2mu2.Add(&g2)

删除方法和添加方法相似,将add改成Remove即可。另外还是clear等等

查询 o := orm.NewOrm() u := new(User) u.Id = 1 o.LoadRelated(u, "Groups")