先交代下數據表結構
- 主表(訂單表)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() 方法來添加條件