首页 话题 小组 问答 好文 用户 我的社区 域名交易

[程序]laravel unionAll 类方法封装

发布于 2024-12-01 09:38:19
0
70


public function getData(Request $request,SellValidate $validate,Query $query){
        
        $input=$request->input();
        $verify=$validate->check($input);
        if($verify){
            $user = auth()->user();
            // DB::enableQueryLog();
            $sql= [];
            $sql1= [];
            $sql2= [];
            if(isset($input['start_time']) && $input['start_time']){
                $sql[] = ['a.time','>=',strtotime($input['start_time'])];
                $sql1[] = ['c.time','>=',strtotime($input['start_time'])];
                $sql2[] = ['r.time','>=',strtotime($input['start_time'])];
            }
            
            if(isset($input['end_time']) && $input['end_time']){
                $sql[] = ['a.time','<=',strtotime($input['end_time'])];
                $sql1[] = ['c.time','<=',strtotime($input['end_time'])];
                $sql2[] = ['r.time','<=',strtotime($input['end_time'])];
            }
            
            $sql[] = ['a.user','=',$user->id];
            $sql1[] = ['c.user','=',$user->id];
            $sql2[] = ['r.user','=',$user->id];
            
            $sql[] = ['a.examine','=',1];
            $sql[] = ['a.customer','=',$input['customer']];
            $sql[] = ['b.type','=','sell'];
            
            $sql1[] = ['c.examine','=',1];
            $sql1[] = ['c.customer','=',$input['customer']];
            $sql1[] = ['d.type','=','sre'];
            
            $sql2[] = ['r.examine','=',1];
            $sql2[] = ['r.customer','=',$input['customer']];
            $sql2[] = ['s.type','=','exchange'];
            
            $xk = DB::table('sells as a')
                ->leftJoin('records as b','a.id','=','b.form')
                ->leftJoin('users as m','a.user','=','m.id')
                ->where($sql)
                ->select('a.id','a.number','a.time','a.amount','a.total','a.user','a.examine','a.type','a.data','b.time as btime','b.info','m.name');
            $query = DB::table('sres as c')
                ->leftJoin('records as d','c.id','=','d.form')
                ->leftJoin('users as n','c.user','=','n.id')
                ->where($sql1)
                ->select('c.id','c.number','c.time','c.amount','c.total','c.user','c.examine','c.type','c.data','d.time as dtime','d.info','n.name');
                // ->unionAll($xk);
                
            $query2 = DB::table('exchanges as r')
                ->leftJoin('records as s','r.id','=','s.form')
                ->leftJoin('users as t','r.user','=','t.id')
                ->where($sql2)
                ->select('r.id','r.number','r.time','r.amount','r.total','r.user','r.examine','r.type','r.data','s.time as stime','s.info','t.name')
                ->unionAll($xk)->unionAll($query);
            $querySql = $query2->toSql();
            // dd($querySql);
            $list= DB::table(DB::raw("($querySql) as w"))->mergeBindings($query2)
                /*->orderBy('created_at','desc')*/->simplePaginate($input['size']);
            return $list;
        }
    }
评论
站长交流