开发者

Zend_Table_Db and Zend_Paginator and Zend_Paginator_Adapter_DbSelect

I have the following query:

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

Now I have the Zend_Paginator code:

        $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)
         开发者_JS百科       ->setPageRange(10)
                ->setCurrentPageNumber($pag);

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

As you see I'm passing the data to the view using $this->view->data = $paginator Before I didn't had $paginator->getAdapter()->setRowCount(200);I could determinate If I have any data or not, what I mean with data, if the query has some results, so If the query has some results I show the to the user, if not, I need to show them a message(No results!)

But in this moment I don't know how can I determinate this, since count($paginator) doesn't work anymore because of $paginator->getAdapter()->setRowCount(200);and I'm using this because it taks about 7 sec for Zend_Paginator to count the page numbers.

So how can I find If my query has any results?


Why would you setRowCount() to a magic number? If whatever method Z_P is using to discover the total number of rows is taking a long time, you might want to override it that way, but you'd want to compute the actual value, wouldn't you?

In most cases, Z_P ought to automatically get the right number (internally, via a subquery). If that subquery is taking too long, you can try building your own Zend_Db_Select to perform the count, and pass that to setRowCount().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜