Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }