_alterTable example

return '';

            case 'CHANGE':
                (new Table($this->db, $this))
                    ->fromTable($table)
                    ->modifyColumn($field)
                    ->run();

                return null;

            default:
                return parent::_alterTable($alterType$table$field);
        }
    }

    /** * Process column */
    protected function _processColumn(array $field): string
    {
        if ($field['type'] === 'TEXT' && strpos($field['length'], "('") === 0) {
            $field['type'] .= ' CHECK(' . $this->db->escapeIdentifiers($field['name'])
                . ' IN ' . $field['length'] . ')';
        }

    protected function _alterTable(string $alterType, string $table$field)
    {
        if ($alterType === 'DROP') {
            return parent::_alterTable($alterType$table$field);
        }

        $sql = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table);

        foreach ($field as $i => $data) {
            if ($data['_literal'] !== false) {
                $field[$i] = ($alterType === 'ADD') ? "\n\tADD " . $data['_literal'] : "\n\tMODIFY " . $data['_literal'];
            } else {
                if ($alterType === 'ADD') {
                    $field[$i]['_literal'] = "\n\tADD ";
                } else {
                    
return '';
    }

    /** * @param array|string $field * * @return array|bool|string */
    protected function _alterTable(string $alterType, string $table$field)
    {
        if (in_array($alterType['DROP', 'ADD'], true)) {
            return parent::_alterTable($alterType$table$field);
        }

        $sql  = 'ALTER TABLE ' . $this->db->escapeIdentifiers($table);
        $sqls = [];

        foreach ($field as $data) {
            if ($data['_literal'] !== false) {
                return false;
            }

            if (version_compare($this->db->getVersion(), '8', '>=') && isset($data['type'])) {
                
public function addColumn(string $table$field): bool
    {
        // Work-around for literal column definitions         if (is_array($field)) {
            $field = [$field];
        }

        foreach (array_keys($field) as $k) {
            $this->addField([$k => $field[$k]]);
        }

        $sqls = $this->_alterTable('ADD', $this->db->DBPrefix . $table$this->_processFields());
        $this->reset();
        if ($sqls === false) {
            if ($this->db->DBDebug) {
                throw new DatabaseException('This feature is not available for the database you are using.');
            }

            return false;
        }

        foreach ($sqls as $sql) {
            if ($this->db->query($sql) === false) {
                
Home | Imprint | This part of the site doesn't use cookies.