<?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);