Example #1
0
    /**
     * Get table columns
     * @param Table $table
     * @return TableColumn[]
     */
    function dbGetTableColumns(Table $table)
    {
        $columns = $table->getColumns();
        if (empty($columns)) {
            $input = new InputForSelect();
            $input->className = TableColumn::class;
            $input->sql = <<<SQL
SELECT *
FROM information_schema.columns c
WHERE c.table_schema = ?
  AND c.table_name   = ?
-- AND c.table_catalog = '[dbname]'
ORDER BY c.ordinal_position;
SQL;
            $input->parameters = [$table->getSchemaName(), $table->getName()];
            $output = $this->dbSelect($input);
            $columns = $output->rows;
            $table->resetColumns();
            foreach ($columns as $column) {
                $table->addColumn($column);
            }
        }
        return $columns;
    }