繁体   English   中英

Zend Framework-限制数据库查询不影响分页器

[英]Zend Framework - Limit db query not impacting paginator

我有以下优化问题。 我有一个大表,所以我想限制查询仅获取前20行。 当用户在第一页上时,仅获取20行,在第二页上时,则获取40行等。

我有以下语句来获取总行数:

$rowsCount = $this->_model->fetchRow( $this->_model->select()->from($this->_model, array('COUNT(*) as count')) )->count;

这是有效的,下面的语句来限制查询

$current_page = $this->_getParam('page');
$query->select(blahblahblah)->limit($current_page * 20);

也完美地工作。 但是现在我有2个选项:使分页器获取所有行-这样分页器就可以了,但是由于表很大而使速度变慢,或者使分页器获取有限的查询,但是分页器认为我只想显示该行数。

我可以告诉分页器分页10000个条目但将查询限制为仅获取前20 *当前页吗?

也许这会帮助您:

$request = $this->getRequest();
$page = $request->getParam('page', 1);

$select = $this->_model->select(); // create select for all records you need
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($select));
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage($page * 20);

然后将$ paginator传递到视图,并像行集一样使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM