LazyRecord\BaseCollection::queryCount PHP Метод

queryCount() публичный Метод

Clone current read query and apply select to count(*) So that we can use the same conditions to query item count.
public queryCount ( ) : integer
Результат integer
    public function queryCount()
    {
        $dsId = $this->getSchema()->getReadSourceId();
        $conn = ConnectionManager::getInstance()->getConnection($dsId);
        $driver = $conn->createQueryDriver();
        $q = clone $this->getCurrentReadQuery();
        $q->setSelect('COUNT(distinct m.id)');
        // Override current select.
        // when selecting count(*), we dont' use groupBys or order by
        $q->clearOrderBy();
        $q->clearGroupBy();
        $arguments = new ArgumentArray();
        $sql = $q->toSql($driver, $arguments);
        return (int) $conn->prepareAndExecute($sql, $arguments->toArray())->fetchColumn();
    }

Usage Example

Пример #1
0
 /**
  * Create collection pager object from collection.
  *
  * @param LazyRecord\BaseCollection collection object.
  * @return BootstrapRegionPager
  */
 protected function createCollectionPager(BaseCollection $collection)
 {
     $page = $this->getCurrentPage();
     $pageSize = $this->getCurrentPageSize();
     $count = $collection->queryCount();
     $collection->page($page, $pageSize);
     // return new RegionPager( $page, $count, $pageSize );
     return new BootstrapRegionPager($page, $count, $pageSize);
 }