tp5的多条件查询及分页

php

浏览数:416

2019-1-7

 public function Play()
     {   $id = input('param.id');
         $MemberID = input('param.MemberID');//用户id
         $MemberDisplayName=input('param.MemberDisplayName');//用户名
         $btime=input('param.btime');//开始时间
         $etime=input('param.etime');//结束时间
         if(!$etime){$etime=date("Y-m-d h:i:s",time());}
         $ip=input('param.ip');
         $Remark=input('param.Remark');//备注,查询like 黑名单
         $PrizeType=input('param.PrizeType');//0,20,21,30
         if($id)
         {
            $this->Playmenu[0]['text'] = '首页/活动列表';
            $this->Playmenu[0]['url']  = 'index';
            $this->Playmenu[1]['text'] = '活动查看/编辑';
            $this->Playmenu[1]['url']  = '/home/game/edit/id/'.$id;
            $this->Playmenu[2]['text'] = '活动数据';
            $this->Playmenu[2]['url']  = '/home/game/Play/id/'.$id;
            $this->assign('third_menu', $this->Playmenu);
            
            $map['GameID']=$id;//判断并赋值各个查询条件
            if($MemberID){$map['MemberID']  = $MemberID;}
            if($MemberDisplayName){$map['MemberDisplayName']  = ['like','%'.$MemberDisplayName.'%'];}
            if($ip){$map['IP']  = $ip;}
            if($Remark){$map['Remark']  = ['like','%'.$Remark.'%'];}
            if($PrizeType){$map['PrizeType']  = $PrizeType;}
            if(!$btime){$btime=date('y-m-d',time()-2592000 );}//取1个月内的}
            
            $data = Gamemodel::get($id);
            $list = Playmodel::where($map)//生成分页,$map是多条件查询,根据输入值判断
                    ->whereTime('CreateTime','>',$btime)
                    ->whereTime('CreateTime','<',$etime)
                    ->order('ID', 'desc')
                    ->paginate(13,false,['query' => [//传递分页参数
                            'MemberID'=>$MemberID,
                            'MemberDisplayName'=>$MemberDisplayName,
                            'IP'=>$ip,
                            'Remark'=>$Remark,
                            'btime'=>$btime,
                            'etime'=>$etime,
                            'PrizeType'=>$PrizeType]]);
                //dump(Playmodel::getLastSql());//打印最近的sql语句
            $Play = Playmodel::where($map)//循环查询
                    ->whereTime('CreateTime','>',$btime)
                    ->whereTime('CreateTime','<',$etime)
                    ->order('ID', 'desc')
                    ->select();
                    
            $data['num']=COUNT($Play);//计算活动次数
            $isok=0;//为模版上各项统计数据赋值
            $PointsReward=0;
            $Voucher=0;
            $shiwu=0;
            foreach( $Play as $k)//遍历完成诸多数据统计
                {   
                    if($k['PrizeType']=21)
                    {
                        $PointsReward=$PointsReward+$k['PointsReward'];
                    }
                    if($k['Remark']=='正常抽奖')
                    {
                        $isok++;
                    }
                    if($k['PrizeType']=20)
                    {
                        if($k['VoucherCodeReward']==''){}
                        else if($k['VoucherCodeReward']=='不能领取更多了哦,去看看别的券吧~'){}
                        else if($k['VoucherCodeReward']=='未生成模板券或模板券无效'){}
                        else {$Voucher++;}
                    }
                    if($k['PrizeType']==30)
                    {
                        $shiwu++;
                    }
                }
            $data['Voucher']=$Voucher;//成功领取优惠券
            $data['shiwu']=$shiwu;//成功送出的实物奖品
            $data['isok']=$isok;//成功参加活动
            $data['PointsReward']=$PointsReward;//送出积分总和
            $data['btime']=strtotime($btime);//开始时间
            $data['etime']=strtotime($etime);//结束时间
            $data['MemberID']=$MemberID;//用户id
            $data['MemberDisplayName']=$MemberDisplayName;//用户名
            $data['ip']=$ip;
            $data['Remark']=$Remark;//备注
            $data['PrizeType']=$PrizeType;//类型
            
            $this->assign('data', $data);
            $this->assign('list', $list);
            return $this->fetch('play');
         }   
     }