1、 本sql 以 查询构造器实现 上述 leftjoin ( a or b ) and c 复杂联表查询
2、使用 DB::raw 生成 一个 字表进行联表,sql如下:
// DB::connection()->enableQueryLog(); $objM = $objM->addSelect('cc.node_id', 'cc.sale_cnt') ->leftJoin(DB::raw("(select node_id, product_id, sum(sale_cnt) as sale_cnt FROM stat_product_sale_day WHERE 1=1 AND node_id=".$nodeId." GROUP BY node_id, product_id) as cc"), function($join){ $join->on( function($left) { return $left->on('s.store_id','=','cc.node_id')->orWhere('product_sale_info.group_id', "0"); }) ->on('product_sale_info.product_id','=','cc.product_id'); // $join->on('s.store_id','=','cc.node_id')->orWhere('product_sale_info.group_id', "0") // ->on('product_sale_info.product_id','=','cc.product_id'); }) -> orderBy('cc.sale_cnt', 'DESC'); } // $objM->get(); dd(DB::getQueryLog());die; return $objM = $objM->paginate(15);
其他的就不说了,拿去用