hydrationMode = $options['hydrate'] ?? Query::HYDRATE_OBJECT; } protected function prepareQuery(AdapterQuery $query): void { parent::prepareQuery($query); $query->setIdentifierPropertyPath(null); } /** * @return Traversable */ protected function getResults(AdapterQuery $query): Traversable { /** @var QueryBuilder $builder */ $builder = $query->get('qb'); $state = $query->getState(); // Apply definitive view state for current 'page' of the table foreach ($state->getOrderBy() as [$column, $direction]) { /** @var AbstractColumn $column */ if ($column->isOrderable()) { $builder->addOrderBy($column->getOrderField(), $direction); } } if ($state->getLength() > 0) { $builder ->setFirstResult($state->getStart()) ->setMaxResults($state->getLength()); } /* * Use foreach instead of iterate to prevent group by from crashing */ foreach ($builder->getQuery()->getResult($this->hydrationMode) as $result) { /* * Return everything instead of first element */ yield $result; } } }