一、多表查询的时候建议使用原生sql查询,若使用beego提供的orm表定义的方法查询,返回字段形式固定,对于有代码强迫症的小伙伴来说很别扭,请看下图:

func GetGoodsList(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {var maps []orm.Paramsvar returnp *utils.ControllerErroro := orm.NewOrm()qs := o.QueryTable(new(Goods)).RelatedSel()var limit, offset intvar errd errorif form.Limit < 1 {limit = 20}if form.Offset < 1 {offset = 0}if len(form.GoodTypId) == 0 {_, errd = qs.Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")} else {_, errd = qs.Filter("GoodType__TypeId", form.GoodTypId).Limit(limit, offset).OrderBy("Look").Values(&maps, "name", "GoodType__TypeId", "GoodType__TypeName", "Look", "GoodsId", "Price", "Discount", "ImageUrl", "StoreInfo__Amount", "StoreInfo__Left")}if errd != nil {returnp = utils.ErrDatabase} else {returnp = utils.Actionsuccess}return returnp, &maps
}

传入参数返回:

{"code": 9000,"data": [{"Discount": 7,"GoodType__TypeId": "2018020209225223","GoodType__TypeName": "保险推销","GoodsId": "2018020209252238","ImageUrl": "","Look": 9,"Name": "成人意外险","Price": 90,"StoreInfo__Amount": 350,"StoreInfo__Left": 350}],"message": "获取信息成功"
}

返回字段都是大写,且关联表字段含有双_,对于这样的格式我只能呵呵了。

如果采用原生SQL查询,请看一下代码:

func GetGoodsList1(form *GoodsListForm) (err *utils.ControllerError, list *[]orm.Params) {var maps []orm.Paramsvar returnp *utils.ControllerErrorvar errd errorlimit, offset := form.Limit, form.Offsetif limit < 1 {limit = 20}if offset < 1 {offset = 0}o := orm.NewOrm()if len(form.GoodTypId) > 0 {_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typename`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` WHERE T1.`type_id` = ? ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", form.GoodTypId, limit, offset).Values(&maps)} else {_, errd = o.Raw("SELECT T0.`name` `name`, T1.`type_id` `typeid`, T1.`type_name` `typeName`, T0.`look` `look`, T0.`goods_id` `goodsid`, T0.`price` `price`, T0.`discount` `discount`, T0.`image_url` `imageurl`, T2.`amount` `amount`, T2.`left` `left` FROM `goods` T0 INNER JOIN `good_type` T1 ON T1.`id` = T0.`good_type_id` INNER JOIN `good_store` T2 ON T2.`id` = T0.`store_info_id` ORDER BY T0.`look` ASC LIMIT ? OFFSET ?", limit, offset).Values(&maps)}if errd != nil {returnp = utils.ErrDatabase} else {returnp = utils.Actionsuccess}return returnp, &maps
}

传入参数返回:

{"code": 9000,"data": [{"amount": "350","discount": "7","goodsid": "2018020209252238","imageurl": "","left": "350","look": "9","name": "成人意外险","price": "90","typeid": "2018020209225223","typename": "保险推销"}],"message": "获取信息成功"
}

采用原生SQL可以随意修改返回参数的名称了,再也不用担心有代码强迫症的伙伴BB了。

使用beego开发多表查询返回字段问题相关推荐

  1. 通用表查询返回所有行(只适用于单表)

    @GetMapping(value = "/user") @ResponseBodypublic List<SysUser> getUser(String userNa ...

  2. Hibernate 原生SQL多表查询时-字段名相同-查询数据覆盖问题

    问题描述 实际工作中通过Hibernate进行多表查询 两个实体类有相同属性 如下图所示 t_project_iter和t_project_story 表中TITLE 中字段名称相同 通过如下图方式进 ...

  3. SELECT连表查询重复字段

    连表查询不用SELECT * 直接用 SELECT FIELD 列字段,错误:两个表出现重复的两个字段userId: Cause: java.sql.SQLIntegrityConstraintVio ...

  4. 多表查询,字段名重复问题解决

    mybatis在进行多表查询的时候遇到多表有重复的列名,会导致查询的结果有误,少赋值,或者错赋值等问题. 尽量减少列名重复,无法避免时可以给列名起别名,用resultMap中的column属性值就是你 ...

  5. java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...

    对于多表联查需要使用springdata jpa的@Query标注实现,例如最代码的我的私信列表的查询:public static final String POSTREPOSITORY_FINDAL ...

  6. 微信小程序云开发联表查询【聚合】

    先附上官方文档 主要使用的是lookup,分为相等匹配和自定义连接条件.拼接子查询,难的是第二种查询方式 第一种 lookup({from: <要连接的集合名>,localField: & ...

  7. 多表查询返回多个DataTable,合并到一个Table中.

    本文意在说明一下DataSet.Merge(Table)和多个Table合并到一个里面的操作.因为是新手,代码肯定有很多问题,欢迎大家批评指正.    如果你有更好的解决方案,请告诉我.谢谢. 先说一 ...

  8. php查询字段的总和,ThinkPHP 多表查询-如其字段A相同,则把字段B相加

    在一个项目中,需要查询表tr_product中的user_id字段,如果user_id相同,则把其对应的money字段相加,数据库截图如下: 实现代码: $Model = D('Model'); $r ...

  9. 微信云开发联表查询 表1与表2关联 表2与表3关联

    业务逻辑 实现转盘抽奖游戏 需求数据 1.转盘抽奖表 2.转盘奖品对用的卡券表 3.卡券对应的卡券档案表 三表关系 抽奖表的 cardid(卡券ID) 等于 卡券表的(id) ,卡券表的(daid) ...

最新文章

  1. 七个开发者成就百亿市值公司?这个技术思路如今让阿里发扬光大
  2. mysql数据库容量查询
  3. opencv透视变换:GetPerspectiveTransform、warpPerspective函数的使用
  4. Verilog hdl与VHDL混用详解
  5. 187. Repeated DNA Sequences重复的DNA子串序列
  6. PHP 从结果集中取得一行作为关联数组:
  7. mysql初始化脚本建表_mysql新建表修改表sql脚本
  8. Jetty9 源码初解(2)——IO之Connection
  9. Error: failed to unmarshal json. invalid character '\'' looking for beginning of value解决方案
  10. windows10重装后锁定其他盘_电脑重装Windows10系统步骤
  11. python依赖包安装
  12. jwplayer android m3u8,播放上jwplayer M3U8文件,而RTMP
  13. 【ArcGIS Pro微课1000例】0009:ArcGIS Pro地理配准完整教程(建议收藏)
  14. 2023西安电子科技大学计算机考研信息汇总
  15. 13款入侵检测系统介绍(HIDS)
  16. java设计课堂派的教师端
  17. 《水浒传》108将的绰号(ZZ)
  18. win10彻底禁用自动更新,win10怎样彻底关闭自动更新,永久关闭win10自动更新,win10更新助手...
  19. Gson系列1 --- Gson 序列化与反序列化 -- 数组 / 集合序列化
  20. JAVA 开发命名规范——阿里巴巴Java开发手册

热门文章

  1. ubuntu升级python_Ubuntu 系统下可以做什么?——拥抱自由和安静
  2. v4l2 框架下如何设置分辨率_【微学习】低压计量电表如何设置?(下)
  3. Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
  4. 一维卷积神经网络、卷积神经网络的基础知识
  5. SAGAN原理及代码(B站详解,很值得一看)
  6. 2-2hadoop概述
  7. CSS文字颜色渐变 - 案例篇
  8. khv是什么虚拟服务器,服务器虚拟化vSphere4 vs Hyper-V R2,选择谁?
  9. 小程序view设置背景图片_小程序商城分销功能设置技巧 设计方法
  10. python发送邮件并返回提示_python-邮件提醒功能