Example #1
0
 /**
  * Gets the column name in MsSQL.
  *
  * @param mixed $column
  *
  * @return string
  */
 public function getColumnDefinition(\Phalcon\Db\ColumnInterface $column)
 {
     $columnSql = '';
     $type = $column->getType();
     if (is_string($type)) {
         $columnSql .= $type;
         $type = $column->getTypeReference();
     }
     switch ($type) {
         case Column::TYPE_INTEGER:
             if (empty($columnSql)) {
                 $columnSql .= 'INT';
             }
             //                $columnSql .= '('.$column->getSize().')';
             //                if ($column->isUnsigned()) {
             //                    $columnSql .= ' UNSIGNED';
             //                }
             break;
         case Column::TYPE_DATE:
             if (empty($columnSql)) {
                 $columnSql .= 'DATE';
             }
             break;
         case Column::TYPE_VARCHAR:
             if (empty($columnSql)) {
                 $columnSql .= 'NVARCHAR';
             }
             $columnSql .= '(' . $column->getSize() . ')';
             break;
         case Column::TYPE_DECIMAL:
             if (empty($columnSql)) {
                 $columnSql .= 'DECIMAL';
             }
             $columnSql .= '(' . $column->getSize() . ',' . $column->getScale() . ')';
             //                if ($column->isUnsigned()) {
             //                    $columnSql .= ' UNSIGNED';
             //                }
             break;
         case Column::TYPE_DATETIME:
             if (empty($columnSql)) {
                 $columnSql .= 'DATETIME';
             }
             break;
         case Column::TYPE_TIMESTAMP:
             if (empty($columnSql)) {
                 $columnSql .= 'TIMESTAMP';
             }
             break;
         case Column::TYPE_CHAR:
             if (empty($columnSql)) {
                 $columnSql .= 'CHAR';
             }
             $columnSql .= '(' . $column->getSize() . ')';
             break;
         case Column::TYPE_TEXT:
             if (empty($columnSql)) {
                 $columnSql .= 'NTEXT';
             }
             break;
         case Column::TYPE_BOOLEAN:
             if (empty($columnSql)) {
                 $columnSql .= 'BIT';
             }
             break;
         case Column::TYPE_FLOAT:
             if (empty($columnSql)) {
                 $columnSql .= 'FLOAT';
             }
             $size = $column->getSize();
             if ($size) {
                 //                    $scale = $column->getScale();
                 //                    if ($scale) {
                 //                        $columnSql .= '('.size.','.scale.')';
                 //                    } else {
                 $columnSql .= '(' . size . ')';
                 //                    }
             }
             //                if ($column->isUnsigned()) {
             //                    $columnSql .= ' UNSIGNED';
             //                }
             break;
         case Column::TYPE_DOUBLE:
             if (empty($columnSql)) {
                 $columnSql .= 'NUMERIC';
             }
             $size = $column->getSize();
             if ($size) {
                 $scale = $column->getScale();
                 $columnSql .= '(' . $size;
                 if ($scale) {
                     $columnSql .= ',' . $scale . ')';
                 } else {
                     $columnSql .= ')';
                 }
             }
             //                if ($column->isUnsigned()) {
             //                    $columnSql .= ' UNSIGNED';
             //                }
             break;
         case Column::TYPE_BIGINTEGER:
             if (empty($columnSql)) {
                 $columnSql .= 'BIGINT';
             }
             $size = $column->getSize();
             if ($size) {
                 $columnSql .= '(' . $size . ')';
             }
             //                if ($column->isUnsigned()) {
             //                    $columnSql .= ' UNSIGNED';
             //                }
             break;
         case Column::TYPE_TINYBLOB:
             if (empty($columnSql)) {
                 $columnSql .= 'VARBINARY(255)';
             }
             break;
         case Column::TYPE_BLOB:
         case Column::TYPE_MEDIUMBLOB:
         case Column::TYPE_LONGBLOB:
             if (empty($columnSql)) {
                 $columnSql .= 'VARBINARY(MAX)';
             }
             break;
         default:
             if (empty($columnSql)) {
                 throw new Exception('Unrecognized MsSql data type at column ' . $column->getName());
             }
             $typeValues = $column->getTypeValues();
             if (!empty($typeValues)) {
                 if (is_array($typeValues)) {
                     $valueSql = '';
                     foreach ($typeValues as $value) {
                         $valueSql .= '"' . addcslashes($value, '"') . '", ';
                     }
                     $columnSql .= '(' . substr(valueSql, 0, -2) . ')';
                 } else {
                     $columnSql .= '("' . addcslashes($typeValues, '"') . '")';
                 }
             }
             break;
     }
     return $columnSql;
 }