前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel 中将一对多关联查询的结果去重处理

laravel 中将一对多关联查询的结果去重处理

作者头像
码缘
发布2019-10-08 15:14:51
2K0
发布2019-10-08 15:14:51
举报
文章被收录于专栏:PHP修行之路

先交代下数据表结构

  • 主表(订单表)order数据

ord_id

order_sn

1

EX2019100123458

其中主键为order_id(订单id)

  • 子表(门票表)order_item数据

ord_ite_id

ord_id

exhibit_sn

type

1

1

EXSN20191001001

1

2

1

EXSN20191001002

1

3

1

EXSN20191001003

1

主表与子表之间通过 ord_id进行关联

实现:通过通过子表的 type(门票类型)查询主表中的订单编号

第一种尝试:

代码语言:javascript
复制
select DISTINCT `order`.ord_id from `order` INNER JOIN order_item on order.ord_id = order_item.ord_id where type = 1;

这种方法可以实现但是在laravel中如果想分页的话需要这么使用

代码语言:javascript
复制
DB::table(DB::raw("sql语句"))->paginate(15);

但是这样的话我们相当于使用的原生sql语句,但是如果在添加条件的话只能去拼接sql语句啦

第二种尝试:

代码语言:javascript
复制
select `order`.ord_id,`order`.order_sn from `order` INNER JOIN (select distinct ord_id from order_item) r on `order`.ord_id=r.ord_id

在larave中使用

代码语言:javascript
复制
Order::join(DB::raw("(select distinct order_item.ord_id item_ord_id,type from order_item) ".env("DB_PREFIX")."bb"),"bb.item_order_id","exhibit_order.order_id")->paginate(15);

这样我们可以继续使用 where() 方法来添加条件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档