beego ORM 所有多对多关系查询

本文介绍了如何使用beego ORM在Go语言中处理多对多关系查询,包括通过指定expr获取所需数据和加载所有相关联的关系。示例展示了在文章目录查询中如何获取文章的分类及所有标签信息,强调了在实际应用中优化查询效率的重要性。

beego ORM 所有多对多关系查询

示例models中,ArticleCategory为多对一关系,ArticleTag是多对多关系。

type Article struct {
   
   
  ID       int        `orm:"column(id)"`
  Title    string     `orm:"size(60)"`
  Category *Category  `orm:"null;rel(fk);on_delete(do_nothing)"`
  Tags     []*Tag     `orm:"null;rel(m2m);on_delete(do_nothing)"`
  Content  string     `orm:"type(text)"`
}

type Tag struct {
   
   
  ID       int        `orm:"column(id)"`
  Name     string     `orm:"size(30)"`
  Articles []*Article `orm:"reverse(many)"`
}

type Category struct {
   
   
  ID       int        `orm:"column(id)"`
  Name     string     `orm:"size(30)"`
  Articles []*Article `orm:"reverse(many)"`
}

假设浏览器请求文章目录信息,服务器需要返回的信息格式如下,也就是说对查询到的Article对象需要查询到其关联到的一个Category对象与所有Tag对象

[
  {
   
   
  	"id": 1,
  	"title": "测试标题",
  	"Cateogry": "测试目录",
  	"tags": ["测试标签1", "测试标签2", "测试标签3"]
  }{
   
   
  	...其余Article对象
  }
]

示例程序如下,

package main

import (
  "fmt"

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值