【发布时间】:2016-03-25 06:09:08
【问题描述】:
我正在使用 Zend 1 (1.12),并且正在使用 Zend_Paginator 类在网页上显示查询结果。但是,有大量记录(超过一百万条),实际上,在大多数情况下,他们只需要或想要搜索最近的 1000 条左右的记录。
问题是,我已经有一部分网页设置了“每页”值,这本质上会产生一个限制(如果它们不再位于搜索的“第 1 页”上,则会产生偏移量。)
基本上,我要问的是,有没有办法告诉 Zend_Pagintor“只获取前 1000 条记录,然后根据用户的每页选择对它们进行分页”?
我尝试将限制参数传入我正在使用的界面,但 Zend_Paginator 似乎忽略了它,获取所有结果,然后对它们进行分页。
function getRecords($currentPage)
{
$select = "select * from table where user_id = 1 limit 1000";
/* $select is actually a Zend_Db_Table_Select object, not a string. */
$paginator = new Zend_Paginator::factory($select);
$paginator->setItemCountPerPage(25);
$paginator->setCurrentPageNumber($currentPage);
return $paginator;
}
($select 显然是一个占位符。)
【问题讨论】:
-
我以前没有用过这样的工厂。我认为您必须创建一个查询或将行集传递给它。
-
对不起,我不清楚。在这种情况下,$select 变量是使用另一个函数创建的查询。该查询的文本是引用的内容。但它实际上是一个 Zend_Db_Table_Select 对象。
标签: php zend-framework zend-paginator