protected function findIdsByGivenCriteria()
{
$select = null;
if (null !== $this->idField) {
$select = $this->idField->getSelect();
}
$subQueryBuilder = $this->createSubQueryBuilder($select);
if ($this->limit != null) {
$subQueryBuilder->setMaxResults($this->limit)->setFirstResult($this->limit * ($this->page - 1));
}
foreach ($this->sortFields as $index => $sortField) {
$subQueryBuilder->addSelect($sortField->getSelect() . ' AS ' . $sortField->getName());
}
$this->assignSortFields($subQueryBuilder);
$ids = $subQueryBuilder->getQuery()->getArrayResult();
// if no results are found - return
if (count($ids) < 1) {
return [];
}
$ids = array_map(function ($array) {
return $array['id'];
}, $ids);
return $ids;
}