先交代下数据表结构
- 主表(订单表)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(门票类型)查询主表中的订单编号
第一种尝试:
select DISTINCT `order`.ord_id from `order` INNER JOIN order_item on order.ord_id = order_item.ord_id where type = 1;
这种方法可以实现但是在laravel中如果想分页的话需要这么使用
DB::table(DB::raw("sql语句"))->paginate(15);
但是这样的话我们相当于使用的原生sql语句,但是如果在添加条件的话只能去拼接sql语句啦
第二种尝试:
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中使用
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() 方法来添加条件
原文地址:https://www.cnblogs.com/itsuibi/p/11617512.html
时间: 2024-10-17 01:11:43