Doctrine\DBAL\Schema\DB2SchemaManager::_getPortableTableColumnDefinition PHP Method

_getPortableTableColumnDefinition() protected method

protected _getPortableTableColumnDefinition ( $tableColumn )
    protected function _getPortableTableColumnDefinition($tableColumn)
    {
        $tableColumn = array_change_key_case($tableColumn, \CASE_LOWER);
        $length = null;
        $fixed = null;
        $unsigned = false;
        $scale = false;
        $precision = false;
        $default = null;
        if (null !== $tableColumn['default'] && 'NULL' != $tableColumn['default']) {
            $default = trim($tableColumn['default'], "'");
        }
        $type = $this->_platform->getDoctrineTypeMapping($tableColumn['typename']);
        if (isset($tableColumn['comment'])) {
            $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
            $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
        }
        switch (strtolower($tableColumn['typename'])) {
            case 'varchar':
                $length = $tableColumn['length'];
                $fixed = false;
                break;
            case 'character':
                $length = $tableColumn['length'];
                $fixed = true;
                break;
            case 'clob':
                $length = $tableColumn['length'];
                break;
            case 'decimal':
            case 'double':
            case 'real':
                $scale = $tableColumn['scale'];
                $precision = $tableColumn['length'];
                break;
        }
        $options = array('length' => $length, 'unsigned' => (bool) $unsigned, 'fixed' => (bool) $fixed, 'default' => $default, 'autoincrement' => (bool) $tableColumn['autoincrement'], 'notnull' => (bool) ($tableColumn['nulls'] == 'N'), 'scale' => null, 'precision' => null, 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' ? $tableColumn['comment'] : null, 'platformOptions' => array());
        if ($scale !== null && $precision !== null) {
            $options['scale'] = $scale;
            $options['precision'] = $precision;
        }
        return new Column($tableColumn['colname'], \Doctrine\DBAL\Types\Type::getType($type), $options);
    }

Usage Example

 protected function _getPortableTableColumnDefinition($tableColumn)
 {
     $columnDefinition = parent::_getPortableTableColumnDefinition($tableColumn);
     if ($columnDefinition->getNotnull() === true && empty($columnDefinition->getDefault())) {
         $columnDefinition->setDefault(null);
     }
     return $columnDefinition;
 }