protected function getIteratorCount()
{
if ($this->resultCount === null) {
$builder = clone $this->queryBuilder;
if ($builder->hasLimitOffsetClause()) {
/** @var StorageReflection $reflection */
$reflection = $this->repository->getMapper()->getStorageReflection();
$primary = (array) $reflection->getStoragePrimaryKey();
foreach ($primary as $column) {
$builder->addSelect('%table.%column', $builder->getFromAlias(), $column);
}
$sql = 'SELECT COUNT(*) FROM (' . $builder->getQuerySql() . ') temp';
$args = $builder->getQueryParameters();
} else {
$builder->select('COUNT(*)');
$builder->orderBy(null);
$sql = $builder->getQuerySql();
$args = $builder->getQueryParameters();
}
$this->resultCount = $this->connection->queryArgs($sql, $args)->fetchField();
}
return $this->resultCount;
}