src/orm/classes/Table.php
protected function hasColumns(array $columns)
    {
        $fieldTypes = $this->getDriver()->getManager()->getFieldTypes();
        $this->columns = array();
        foreach ($columns as $name => $attrs)
        {
            if (!is_string($name))
            {
                throw new InvalidArgumentException(sprintf(
                    'Column name must be a string, got "%s"', gettype($name)));
            }
            if (!preg_match('/^[a-z_]+$/i', $name))
            {
                throw new InvalidArgumentException(sprintf(
                    'Column name must be a non empty string consisted of "a-zA-Z" or "_", got "%s"',
                    $name));
            }
            if (!is_array($attrs))
            {
                throw new InvalidArgumentException(
                    sprintf('Definition of column "%s" is not an array', $name));
            }
            if (!array_key_exists('type', $attrs))
            {
                throw new InvalidArgumentException(
                    sprintf('No "type" element in "%s" definition', $name));
            }
            if (!array_key_exists($attrs['type'], $fieldTypes))
            {
                throw new InvalidArgumentException(
                    sprintf('Unsupported type "%s" in "%s" definition', $attrs['type'], $name));
            }
            $fieldTypeClass = $fieldTypes[$attrs['type']];
            unset($attrs['type']);
            $this->columns[$name] = new $fieldTypeClass($this, $name, $attrs);
        }
        reset($columns);
        $this->primaryKey = key($columns);
    }
protected function hasColumns(array $columns)
    {
        $fieldTypes = $this->getDriver()->getManager()->getFieldTypes();
        $this->columns = array();
        foreach ($columns as $name => $attrs)
        {
            if (!is_string($name))
            {
                throw new InvalidArgumentException(sprintf(
                    'Column name must be a string, got "%s"', gettype($name)));
            }
            if (!preg_match('/^[a-z_]+$/i', $name))
            {
                throw new InvalidArgumentException(sprintf(
                    'Column name must be a non empty string consisted of "a-zA-Z" or "_", got "%s"',
                    $name));
            }
            if (!is_array($attrs))
            {
                throw new InvalidArgumentException(
                    sprintf('Definition of column "%s" is not an array', $name));
            }
            if (!array_key_exists('type', $attrs))
            {
                throw new InvalidArgumentException(
                    sprintf('No "type" element in "%s" definition', $name));
            }
            if (!array_key_exists($attrs['type'], $fieldTypes))
            {
                throw new InvalidArgumentException(
                    sprintf('Unsupported type "%s" in "%s" definition', $attrs['type'], $name));
            }
            $fieldTypeClass = $fieldTypes[$attrs['type']];
            unset($attrs['type']);
            $this->columns[$name] = new $fieldTypeClass($this, $name, $attrs);
        }
        reset($columns);
        $this->primaryKey = key($columns);
    }
Устанавливает описания столбцов

Аргумент $columns должен быть ассоциативным массивом, где каждый элемент соответствует
одному столбцу таблицы, при этом ключ элемента должен задавать имя столбца, а тело элемента —
описание этого столбца. В свою очередь, тело элемента должно быть ассоциативным массивом, в
котором можно использовать следующие ключи:

- type (string) — тип поля (см. ниже).
- autoincrement (bool) — Автоинкрементное. Допустим только у первого столбца.
- length (int) — размер столбца.
- unsigned (bool) — беззнаковое число.

Первый столбец всегда назначается основным ключом.

Возможные типы полей:

- bindings — список привязок к другим сущностям
- boolean
- date
- datetime
- entity — {@link ORM_Field_Entities ссылка на другую сущность}
- entities — коллекция других сущностей
- float
- integer
- string
- time
- timestamp — хранится как целое число

Более подробные описания этих типов можно найти в документации по соответствующим классам
ORM_Field_xxx.

@param array $columns

@throws InvalidArgumentException

@return void

@since 1.00