Exemplo n.º 1
0
 /**
  * @return string
  *
  * @throws \Doctrine\DBAL\Query\QueryException
  */
 protected function getSQLForSelect()
 {
     $query = 'SELECT ' . implode(', ', $this->sqlParts['select']) . ' FROM ';
     $fromClauses = array();
     $knownAliases = array();
     // Loop through all FROM clauses
     foreach ($this->sqlParts['from'] as $from) {
         $knownAliases[$from['alias']] = true;
         $fromClause = $from['table'] . ' ' . $from['alias'] . $this->getSQLForJoins($from['alias'], $knownAliases);
         $fromClauses[$from['alias']] = $fromClause;
     }
     foreach ($this->sqlParts['join'] as $fromAlias => $joins) {
         if (!isset($knownAliases[$fromAlias])) {
             throw QueryException::unknownAlias($fromAlias, array_keys($knownAliases));
         }
     }
     $query .= implode(', ', $fromClauses) . ($this->sqlParts['where'] !== null ? ' WHERE ' . (string) $this->sqlParts['where'] : '') . ($this->sqlParts['groupBy'] ? ' GROUP BY ' . implode(', ', $this->sqlParts['groupBy']) : '') . ($this->sqlParts['having'] !== null ? ' HAVING ' . (string) $this->sqlParts['having'] : '') . ($this->sqlParts['orderBy'] ? ' ORDER BY ' . implode(', ', $this->sqlParts['orderBy']) : '');
     return $this->maxResults === null && $this->firstResult == null ? $query : $this->connection->getDatabasePlatform()->modifyLimitQuery($query, $this->maxResults, $this->firstResult);
 }