dataTable的后台分页。

前台开启服务器模式: "serverSide": true,
前台排序:   "aoColumnDefs": [{"bSortable": false, "aTargets": [0, 1, 2, 3, 4, 7]}](填写不需要排序字段), "order": [[5, "desc"]],根据那个排序

后台:   
//$datas 为控制器传过来的值  :I(“post.”)
public function table_list($datas)
    {
        $draw = $datas['draw'];

        //排序
        $order_column = $datas['order']['0']['column'];//那一列排序,从0开始
        $order_dir = $datas['order']['0']['dir'];//ase desc 升序或者降序
//            排序
        $orderSql = "";
        if (isset($order_column)) {
            $i = intval($order_column);
            switch ($i) {
                case 3;
                    $orderSql = "a.expiretime {$order_dir}";
                    break;
                case 4;
                    $orderSql = "a.createtime {$order_dir}";
                    break;
                case 5;
                    $orderSql = "a.utilitytime {$order_dir}";
                    break;
                default:
                    $orderSql = "a.createtime desc";
            }
        }

        $search = $datas['search'];
        $search = $search['value'];//获取前台传过来的过滤条件

        //分页
        $start = $datas['start'];//从多少开始
        $length = $datas['length'];//数据长度
        $limitFlag = isset($start) && $length != -1;

        $sql = D('Wishadmin/WishUserCard');

        //搜索
        $where = 'a.state != 0 ';
        if (strlen($search) > 0) {
            $where .= "and u.username like '%$search%' or b.name like '%$search%'";
        }

//        echo $where;

        //分页
        if ($limitFlag) {
            $sql->limit(intval($start), intval($length));
        }


        $res = $sql->alias('a')
            ->field('u.username as name,b.name as cardname,a.state,a.expiretime,a.createtime,a.operatetime,a.id')
            ->join('wish_card b on a.card_id = b.id')
            ->join('wish_user u on a.userid = u.userid')
            ->where($where)
            ->order($orderSql)
            ->select();

        if (!$res) {
  $this->error("数据查询失败。");
        }

 //查询总数量
        $recordsTotal = D('Wishadmin/WishUserCard')->alias('a')
            ->field("count(a.id) as num")
            ->join('wish_card b on a.card_id = b.id')
            ->join('wish_user u on a.userid = u.userid')
            ->where($where)
            ->count();
        $data["draw"] = intval($draw);
        $data["recordsTotal"] = intval($recordsTotal);
        $data["recordsFiltered"] = intval($recordsTotal);
        $data["data"] = $res;

        return $data;

    }

猜你喜欢

转载自blog.csdn.net/qq_21208843/article/details/80888807