前端使用datatable插件时,每一次对于表格的操作都需要写出相应处理函数,对面向过程的php程序开发,就意味着要写更多的function,所以借鉴工作中遇到的,写了一个php封装datatable的类,让自己控制器下的代码更精炼一些,在代码中做解释。
<?php
/**
* 处理datatables传递的数据
*/
class DataTable
{
protected $_db;
protected $_draw ;
protected $_order_column ; <span style="white-space:pre"> </span>//排序的行
protected $_order_dir ; <span style="white-space:pre"> </span>//排序方式 asc desc
protected $_search='' ; //查询的字符串
protected $_start ; <span style="white-space:pre"> </span>//开始的位置
protected $_length ; //查询的长度
protected $_recordsFiltered=0 ; //过滤后的条目数量
protected $_recordsTotal=0 ; //总的条目数量
protected $_return; //没用到
protected $_info; //存放构造函数的第二个参数
protected $_andSql=''; //用来存放总条目的where字段
/**
* 构造函数
* @param [type] $dataTableGet [dataTable前台传递过来的数组]
* @param [type] $info [构造好的数组]
* example array( //表示 select ID AS sum,ID,USERNMAE 其中 sum用来统计数据的总条数
* "select"=array(
* "ID"=>"sum",
* "0"=>'ID',
* "1"=>"USERNAME",
* ),
* "sum"=>"ID", //必须 用来查询总的条数 值必须是唯一的
* "table"=>"db_name",//项目的数据库名称
* "order"=>array(//前台会发送过来根据哪一列排序 接收过来的值就是 键值,对应到数据表中的字段就是值,前台有几个列能够排序这里就需要有几个对应的键值对
* "0"=>"ID",
* "2"=>"USERNAME",
* ),
* "where"=>array( //and和or可以同时调用 但是or是用来做查询的 and则是初始数据的查询条件
* "and"=>array( //表示会查询state=1 and level=2 的数据
* "state"=>'1',
* "level"=>"2",
*