diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-07-10 16:54:28 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-07-10 16:54:28 +0300 |
commit | 87cc627fdd144543bdac6264ec7c3dd5c3e824ab (patch) | |
tree | a0760fe475887b3ef817c8fabd55f2859fac54a3 /src/Utils/Misc.php | |
parent | 527842708bf44fe2bb4d17a97203cec01b860960 (diff) | |
download | sql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.zip sql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.tar.gz sql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.tar.bz2 |
Imporved JOIN parsing and building.
Some keywords may appear in conditions.
Diffstat (limited to 'src/Utils/Misc.php')
-rw-r--r-- | src/Utils/Misc.php | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/Utils/Misc.php b/src/Utils/Misc.php index e0fbb95..9d3dfa9 100644 --- a/src/Utils/Misc.php +++ b/src/Utils/Misc.php @@ -33,8 +33,8 @@ class Misc public static function getAliases($statement, $database) { if (!($statement instanceof SelectStatement) - || (empty($statement->from)) || (empty($statement->expr)) + || (empty($statement->from)) ) { return array(); } @@ -43,28 +43,21 @@ class Misc $tables = array(); - if ((!empty($statement->join->expr->table)) - && (!empty($statement->join->expr->alias)) - ) { - $thisDb = empty($statement->join->expr->database) ? - $database : $statement->join->expr->database; - - $retval = array( - $thisDb => array( - 'alias' => null, - 'tables' => array( - $statement->join->expr->table => array( - 'alias' => $statement->join->expr->alias, - 'columns' => array(), - ), - ), - ), - ); - - $tables[$thisDb][$statement->join->expr->alias] = $statement->join->expr->table; + /** + * Expressions that may contain aliases. + * These are extracted from `FROM` and `JOIN` keywords. + * @var Expression[] + */ + $expressions = $statement->from; + + // Adding expressions from JOIN. + if (!empty($statement->join)) { + foreach ($statement->join as $join) { + $expressions[] = $join->expr; + } } - foreach ($statement->from as $expr) { + foreach ($expressions as $expr) { if (empty($expr->table)) { continue; } |