/** * Returns the object data matching the $query. * * @param QueryInterface $query * @return array * @throws SqlErrorException */ public function getObjectDataByQuery(QueryInterface $query) { $statement = $query->getStatement(); if ($statement instanceof Qom\Statement) { $rows = $this->getObjectDataByRawQuery($statement); } else { $queryBuilder = $this->objectManager->get(Typo3DbQueryParser::class)->convertQueryToDoctrineQueryBuilder($query); if ($query->getOffset()) { $queryBuilder->setFirstResult($query->getOffset()); } if ($query->getLimit()) { $queryBuilder->setMaxResults($query->getLimit()); } try { $rows = $queryBuilder->execute()->fetchAll(); } catch (DBALException $e) { throw new SqlErrorException($e->getPrevious()->getMessage(), 1472074485); } } $rows = $this->doLanguageAndWorkspaceOverlay($query->getSource(), $rows, $query->getQuerySettings()); return $rows; }
/** * Returns the object data matching the $query. * * @param QueryInterface $query * @return array */ public function getObjectDataByQuery(QueryInterface $query) { $statement = $query->getStatement(); if ($statement instanceof Qom\Statement) { $rows = $this->getObjectDataByRawQuery($statement); } else { $rows = $this->getRowsByStatementParts($query); } $rows = $this->doLanguageAndWorkspaceOverlay($query->getSource(), $rows, $query->getQuerySettings()); return $rows; }
/** * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query * @return int * @throws \TYPO3\CMS\Extbase\Persistence\Generic\Storage\Exception\BadConstraintException */ protected function getObjectCountByQueryTYPO361(\TYPO3\CMS\Extbase\Persistence\QueryInterface $query) { $statement = $query->getStatement(); if ($statement instanceof \TYPO3\CMS\Extbase\Persistence\Generic\Qom\Statement) { /* * Overriding default extbase logic for manually passed SQL */ $sql = $statement->getStatement(); $parameters = $statement->getBoundVariables(); $this->replacePlaceholders($sql, $parameters); $sqlParser = \EssentialDots\ExtbaseHijax\Persistence\Parser\SQL::ParseString($sql); $countQuery = $sqlParser->getCountQuery(); $result = $this->databaseHandle->sql_query($countQuery); $this->checkSqlErrors($countQuery); if (version_compare(TYPO3_version, '6.1.0', '<')) { $rows = $this->getRowsFromResult($query->getSource(), $result); } else { $rows = $this->getRowsFromResult($result); } $count = current(current($rows)); $this->databaseHandle->sql_free_result($result); } else { /* * Default Extbase logic */ $count = parent::getObjectCountByQuery($query); } return (int) $count; }