From 08f2af489e6e4d993171c9a6111487d99b4695e1 Mon Sep 17 00:00:00 2001 From: Guilherme Blanco Date: Sat, 14 May 2011 00:40:23 -0300 Subject: [PATCH] Changed QueryBuilder to allow retrieval of all defined root alises. --- lib/Doctrine/ORM/QueryBuilder.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/Doctrine/ORM/QueryBuilder.php b/lib/Doctrine/ORM/QueryBuilder.php index ded27bdd8..fce4731c5 100644 --- a/lib/Doctrine/ORM/QueryBuilder.php +++ b/lib/Doctrine/ORM/QueryBuilder.php @@ -227,15 +227,28 @@ class QueryBuilder * ->select('u') * ->from('User', 'u'); * - * echo $qb->getRootAlias(); // u + * $qb->getRootAliases(); // array('u') * * * @return string $rootAlias - * @todo Rename/Refactor: getRootAliases(), there can be multiple roots! */ - public function getRootAlias() + public function getRootAliases() { - return $this->_dqlParts['from'][0]->getAlias(); + $aliases = array(); + + foreach ($this->_dqlParts['from'] as &$fromClause) { + if (is_string($fromClause)) { + $spacePos = strrpos($fromClause, ' '); + $from = substr($fromClause, 0, $spacePos); + $alias = substr($fromClause, $spacePos + 1); + + $fromClause = new Query\Expr\From($from, $alias); + } + + $aliases[] = $fromClause->getAlias(); + } + + return $aliases; } /**