一对多关联插入操作:只需要在文章表插入类型对象即可。代码如下:
o := orm.NewOrm()
article := models.Article{}
artiType := models.ArticleType{Id:id}
o.Read(&artiType)
article.ArticleType = &artiType
o.Insert(&article)
一对多关联查询: ORM做多表查询的时候默认是惰性查询,即不明确指出来要做多表查询,即便是两个表之间存在关系,ORM也不会给两个表做关联。指定多表查询的函数是RelatedSel()。参数是要关联的表名,可以有多个。代码如下:
count,err = o.QueryTable("Article").RelatedSel("ArticleType").Count()
如果关联表的那个字段没有值,那么数据查不到
- 多对多关联插入操作
o := orm.NewOrm()
//1.获取操作对象
arti:= Article{Id: 1}
//获取article的多对多操作对象
m2m := o.QueryM2M(&arti, "users")//第一个参数对象必须有主键,第二个参数是字段名
//获取要插入的对象
user := &User{Id:1}
o.Read(&user)
//多对多对象插入
num, err := m2m.Add(user)//参数可以为对象,指针,对象数组,指针数组
多对多关联查询查询:
一种:直接用read查询,然后加上LoadRelated ()函数来关联两张表。代码如下:
post := Post{Id: 1}
err := o.Read(&post)
num, err := o.LoadRelated(&post, "Tags")
优点是简单,快捷。