SqlParser\Utils\Query::getTables PHP Method

getTables() public static method

Gets a list of all tables used in this statement.
public static getTables ( Statement $statement ) : array
$statement SqlParser\Statement Statement to be scanned.
return array
    public static function getTables($statement)
    {
        $expressions = array();
        if ($statement instanceof InsertStatement || $statement instanceof ReplaceStatement) {
            $expressions = array($statement->into->dest);
        } elseif ($statement instanceof UpdateStatement) {
            $expressions = $statement->tables;
        } elseif ($statement instanceof SelectStatement || $statement instanceof DeleteStatement) {
            $expressions = $statement->from;
        } elseif ($statement instanceof AlterStatement || $statement instanceof TruncateStatement) {
            $expressions = array($statement->table);
        } elseif ($statement instanceof DropStatement) {
            if (!$statement->options->has('TABLE')) {
                // No tables are dropped.
                return array();
            }
            $expressions = $statement->fields;
        } elseif ($statement instanceof RenameStatement) {
            foreach ($statement->renames as $rename) {
                $expressions[] = $rename->old;
            }
        }
        $ret = array();
        foreach ($expressions as $expr) {
            if (!empty($expr->table)) {
                $expr->expr = null;
                // Force rebuild.
                $expr->alias = null;
                // Aliases are not required.
                $ret[] = Expression::build($expr);
            }
        }
        return $ret;
    }

Usage Example

Example #1
0
 /**
  * @dataProvider testGetTablesProvider
  */
 public function testGetTables($query, $expected)
 {
     $parser = new Parser($query);
     $this->assertEquals($expected, Query::getTables($parser->statements[0]));
 }