/**
  * @test
  */
 public function getFirstResultDelegatesToConcreteQueryBuilder()
 {
     $this->concreteQueryBuilder->getFirstResult()->shouldBeCalled()->willReturn(1);
     $this->subject->getFirstResult();
 }
示例#2
0
 /**
  * Helper to transform a QueryBuilder object into a queryParts array that can be used
  * with exec_SELECT_queryArray
  *
  * @param \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder
  * @return array
  * @throws \RuntimeException
  */
 protected function getQueryArray(QueryBuilder $queryBuilder)
 {
     $fromClauses = [];
     $knownAliases = [];
     $queryParts = [];
     // Loop through all FROM clauses
     foreach ($queryBuilder->getQueryPart('from') as $from) {
         if ($from['alias'] === null) {
             $tableSql = $from['table'];
             $tableReference = $from['table'];
         } else {
             $tableSql = $from['table'] . ' ' . $from['alias'];
             $tableReference = $from['alias'];
         }
         $knownAliases[$tableReference] = true;
         $fromClauses[$tableReference] = $tableSql . $this->getQueryArrayJoinHelper($tableReference, $queryBuilder->getQueryPart('join'), $knownAliases);
     }
     $queryParts['SELECT'] = implode(', ', $queryBuilder->getQueryPart('select'));
     $queryParts['FROM'] = implode(', ', $fromClauses);
     $queryParts['WHERE'] = (string) $queryBuilder->getQueryPart('where') ?: '';
     $queryParts['GROUPBY'] = implode(', ', $queryBuilder->getQueryPart('groupBy'));
     $queryParts['ORDERBY'] = implode(', ', $queryBuilder->getQueryPart('orderBy'));
     if ($queryBuilder->getFirstResult() > 0) {
         $queryParts['LIMIT'] = $queryBuilder->getFirstResult() . ',' . $queryBuilder->getMaxResults();
     } elseif ($queryBuilder->getMaxResults() > 0) {
         $queryParts['LIMIT'] = $queryBuilder->getMaxResults();
     }
     return $queryParts;
 }