关于排序 或者搜索+排序

第一种方法:.如果排序得数据少的话可以选择前端排序,什么意思呢,就是说在前端页面上排序,你可以写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();
人生得意须尽欢,莫使金樽空对月.
原文地址:https://www.cnblogs.com/luojie-/p/7568660.html