Zend_Table_Db和Zend_Paginator以及Zend_Paginator_Adapter_DbSelect

时间:2010-06-13 18:34:35

标签: php mysql zend-framework

我有以下查询:

$this->select()
 ->where("`name` LIKE ?",'%'.mysql_escape_string($name).'%')

现在我有了Zend_Paginator代码:

        $paginator = new Zend_Paginator(
                // $d is an instance of Zend_Db_Select
                new Zend_Paginator_Adapter_DbSelect($d)
        );      

        $paginator->getAdapter()->setRowCount(200);

        $paginator->setItemCountPerPage(15)
                ->setPageRange(10)
                ->setCurrentPageNumber($pag);

        $this->view->data = $paginator;

如您所见,我正在使用$this->view->data = $paginator将数据传递到视图 在我没有$paginator->getAdapter()->setRowCount(200);之前我可以确定如果我有任何数据,我的意思是数据,如果查询有一些结果,那么如果查询有一些结果我向用户显示,如果不,我需要向他们展示一条消息(没有结果!)

但是在这一刻我不知道怎么能确定这一点,因为count($paginator)由于$paginator->getAdapter()->setRowCount(200);不再起作用而且我正在使用它,因为Zend_Paginator大约需要7秒计算页码。

那我怎么能找到如果我的查询有任何结果?

1 个答案:

答案 0 :(得分:0)

为什么你将setRowCount()设为幻数?如果Z_P用于发现行总数的任何方法花费很长时间,您可能希望以这种方式覆盖它,但是您想要计算实际值,不是吗?

在大多数情况下,Z_P应该自动获得正确的数字(内部,通过子查询)。如果该子查询花费的时间太长,您可以尝试构建自己的Zend_Db_Select来执行计数,并将其传递给setRowCount()。