參考社區方案改進擴展:原文鏈接

在 library/ 下創建 Custom 模塊,核心文件 Custom/Db/Adapter/Pdo/Mysql.php:
<?php
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
class Custom_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql
{
public function fetchPage($sql, $pageSize = 20, $currentPage = 1)
{
$currentPage = is_numeric($currentPage) ? $currentPage : 1;
$result = array();
// 獲取總記錄數
$resultArray = $this->query($sql);
$result['count'] = count($resultArray->fetchAll());
// 計算總頁數
$result['pageCount'] = $result['count'] / $pageSize > 1
? ceil($result['count'] / $pageSize) : 1;
// 計算偏移量
$offset = ($currentPage - 1) * $pageSize;
$result['currentPage'] = $currentPage;
$result['firstPage'] = 1;
$result['lastPage'] = $result['pageCount'];
// 追加 LIMIT 子句
$sql .= ' ' . $this->select()->limit($pageSize, $offset)->__toString();
// 獲取分頁數據
$result['table'] = $this->query($sql)->fetchAll();
return $result;
}
}
resources.db.adapter = "Custom_Db_Adapter_Pdo_Mysql"$db->fetchPage($sql, 20, $page)array(
'count' => 總記錄數,
'pageCount' => 總頁數,
'currentPage'=> 當前頁碼,
'firstPage' => 1,
'lastPage' => 最後頁碼,
'table' => 當前頁數據集合
)
該方案繼承官方 MySQL 適配器,零侵入擴展分頁能力,適合 ZF 1.x 項目快速集成。