我有以下优化问题。我有一个大表,所以我想限制查询只获取前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个当前页面吗?
答案 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一样。