Zend Framework - 限制数据库查询不会影响paginator

时间:2014-05-27 15:22:43

标签: php sql-server database zend-framework

我有以下优化问题。我有一个大表,所以我想限制查询只获取前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);

也很完美。但现在我有两个选择: 让paginator获取所有行 - 这样paginator就可以,但是由于大表或者它很慢或者它很慢 让paginator获取有限的查询,但这样paginator认为只有那些我想要显示的行数。

我能告诉paginator分页10000个条目,但是限制查询只能获取前20个当前页面吗?

1 个答案:

答案 0 :(得分:0)

也许这会对你有所帮助:

$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传递给视图并使用就像rowset一样。