第一种方法:.如果排序得数据少的话可以选择前端排序,什么意思呢,就是说在前端页面上排序,你可以写js,也可以用插件,类似的前排序插件有tablesorter ,但是这也是少数据的,而且这个分页需要自己写,比较麻烦.
第二种方法:.当数据比较多的时候,比如10000条数据,这个时候你在前端排序就会很麻烦,那么这个时候就要选择在数据库里排序,就是在读数据的时候按照你想排序得字段来读取数据库,有写人肯会想到,我读的数据库比较多,而且有的条件比较多,不好一起查询,那么这个时候就可以用子查询,吧几个数据表单独读出来,最后排序得时候一起查询;不写字了,就直接上图
1.按照这三个字段排序
2.要先判断按钮的状态就要有值,还要传值到控制器
1 <div class="body_top margin-top-20 list"> 2 排序: 3 <if condition='$stype eq 1'> 4 <a class="btn btn-info " href="{:url('index')}">默认排序</a> 5 <else/> 6 <a class="btn " href="{:url('index')}" style="color: black">默认排序</a> 7 </if> 8 <if condition='$stype eq 2'> 9 <a href="{:url('index',array('sid'=>$sid,'stype'=>2))}" class="btn btn-info "><span>余额{$sort_i}</span></a> 10 <else/> 11 <a href="{:url('index',array('sid'=>$sid,'stype'=>2))}" class="btn" style="color: black"><span>余额{$sort_i}</span></a> 12 </if> 13 14 <if condition='$stype eq 3'> 15 <a href="{:url('index',array('sales'=>$sales,'stype'=>3))}" class="btn btn-info "><span>总销量{$sort_c}</span></a> 16 <else/> 17 <a href="{:url('index',array('sales'=>$sales,'stype'=>3))}" class="btn" style="color: black"><span>总销量{$sort_c}</span></a> 18 </if> 19 </div>
3.接收传过来的值
1 $param = $this->request->param();
4.判断状态
1 $stype=request()->param('stype'); //排序状态 2 $sid =request()->param('sid') == 2?1 :2; //余额 3 $sale =request()->param('sales') == 2?1 :2; //总销量 4 5 //销量排序 6 if($stype==3){ 7 if($sale==1){ 8 $str='sales desc'; 9 $sort_i='<i class="fa fa-long-arrow-down"></i>'; 10 } 11 else{ 12 $str='sales asc'; 13 $sort_i='<i class="fa fa-long-arrow-up"></i>'; 14 } 15 $this->assign('sort_c',$sort_i); 16 } 17 18 //金额排序 19 elseif($stype==2){ 20 if($sid==1){ 21 $str='a.account desc'; 22 $sort_i='<i class="fa fa-long-arrow-down"></i>'; 23 } 24 else{ 25 $str='a.account asc'; 26 $sort_i='<i class="fa fa-long-arrow-up"></i>'; 27 } 28 $this->assign('sort_i',$sort_i); 29 } 30 //默认排序 31 else{ 32 $str='a.id desc'; 33 $stype=1; 34 }
5.排序查询
1 $list=Db::table('no_bloc') 2 ->alias('a') //主表起别名 3 ->field('count(DISTINCT b.id) as store,a.* ,d.sales as sales,c.sums as sum,e.dealer_name') //集团数量,销售量,集团信息 4 5 6 ->order($str) 7 ->select();