2
votes

How can one retrieve the total number of items found with count() via the Zend Pagintor, NOT the page count? Current tests come up with this approximation as the closest without manipulating the DBSelect count method:

$totalCount = $pagintor->count() * $paginator->getItemCountPerPage();

My question relates to the count() process used by the paginator to get the total number of records.

I've seen this: Zend Framework 2 - Pagination and read these docs http://framework.zend.com/manual/current/en/modules/zend.paginator.advanced.html

http://framework.zend.com/manual/current/en/modules/zend.paginator.usage.html

Are we to customise the count() method for the pagination object just to get the count as per last link?

class MyDbSelect extends Zend\Paginator\Adapter\DbSelect
{
    public function count()
    {
        $select = new Zend\Db\Sql\Select();
        $select->from('item_counts')->columns(array('c'=>'post_count'));

        $statement = $this->sql->prepareStatementForSqlObject($select);
        $result    = $statement->execute();
        $row       = $result->current();
        $this->rowCount = $row['c'];

        return $this->rowCount;
    }
}

$adapter = new MyDbSelect($query, $adapter);
$paginator = new Zend\Paginator\Paginator($adapter);

Maybe I've missed something (probably true...) but since the pagination object has already gone to the trouble of compiling a 'count' why/how can we access this number without doing any other hurdles or obstacle courses... Is there a $paginator->getTotalCount() method somewhere to access this variable...

The final result might be something like '20 records of 4536 total' where 4536 the total.

Many thanks in advance.

ENV: ZF 2.3.9 (not 2.4+)

1

1 Answers

11
votes

Sounds like you want totalItemCount.

$paginator->getTotalItemCount();