作为API的cake框架时,框架自带的分类已经不能满足跨域的这种数据分页查询,所以写了一个请求分页类
<?php
namespace App\Common;
use Cake\ORM\TableRegistry;
use App\Controller\AppController;
use Cake\Datasource\ConnectionManager;
class Paging extends AppController{
public $limits=1;
/**
* 分页查询
* @param string $query SQL对象
* @param string $limit 每页数据条数
* @param string $page 当前页码
* @param string $orderBy 分页根据
* @param string $order 排序顺序
* @return multitype:string multitype:unknown string multitype:string multitype:number unknown
*/
public static function paging($query='',$limit='',$page='',$orderBy='',$order='desc'){
$page=empty($page)?1:$page;
$object = $query->repository();
$orderBy=empty($orderBy)?$object->alias().".id":$orderBy;
$limits=[
'limit' => $limit,
'order' => [
$orderBy => $order
],
'page' => $page,
'whitelist' => [
(int) 0 => 'limit',
(int) 1 => 'sort',
(int) 2 => 'page',
(int) 3 => 'direction'
]
];
//分页查询
$rest=$query->applyOptions($limits);
//查询
$findData=$rest->all()->toArray();
//查询数量
$numResults = count($findData);
//如果查到数据计算所有数据总数
$count = $numResults ? $query->count() : 0;
//总页码
$pageCount = (int)ceil($count / $limit);
//显示页码
$pag=[];
for ($i=1;$i<=$pageCount;$i++){
$pag[]=$i;
}
$data=[
'page'=>$page,//当前页
'data'=>$findData,//当前页数据
'limit'=>$limit,//每页数据
'pageNumber'=>$pag,
'pageCount'=>$pageCount
];
return $data;
}
}
?>
当程序调用的时候只需要引入它对应位置的命名空间就可以调用了
Paging::paging('cake自带的query对象',‘每页数据条数’,‘页码’)
*query对象 : $TgMaterials = TableRegistry::get('tg_*');
$rest=$TgMaterials->find()
->where(['id]=>1);