Example #1
0
 /**
  * Gets the column name in Oracle.
  *
  * @param ColumnInterface $column
  * @return string
  *
  * @throws Exception
  */
 public function getColumnDefinition(ColumnInterface $column)
 {
     $type = $column->getType();
     $size = $column->getSize();
     switch ($type) {
         case Column::TYPE_INTEGER:
             $columnSql = 'INTEGER';
             break;
         case Column::TYPE_DATE:
             $columnSql = 'DATE';
             break;
         case Column::TYPE_VARCHAR:
             $columnSql = 'VARCHAR2(' . $size . ')';
             break;
         case Column::TYPE_DECIMAL:
             $scale = $column->getScale();
             $columnSql = 'NUMBER(' . $size . ',' . $scale . ')';
             break;
         case Column::TYPE_DATETIME:
             $columnSql = 'TIMESTAMP';
             break;
         case Column::TYPE_TIMESTAMP:
             $columnSql = 'TIMESTAMP';
             break;
         case Column::TYPE_CHAR:
             $columnSql = 'CHAR(' . $size . ')';
             break;
         case Column::TYPE_TEXT:
             $columnSql = 'TEXT';
             break;
         case Column::TYPE_FLOAT:
             $scale = $column->getScale();
             $columnSql = 'FLOAT(' . $size . ',' . $scale . ')';
             break;
         case Column::TYPE_BOOLEAN:
             $columnSql = 'TINYINT(1)';
             break;
         default:
             throw new Exception('Unrecognized Oracle data type at column ' . $column->getName());
     }
     return $columnSql;
 }
Example #2
0
    public function getAttributes($type, $visibility, \Phalcon\Db\ColumnInterface $field, $annotate = false, $customFieldName = null)
    {
        $fieldName = $customFieldName ?: $field->getName();
        if ($annotate) {
            $templateAttributes = <<<EOD
    /**
     *
     * @var %s%s%s
     * @Column(type="%s"%s, nullable=%s)
     */
    %s \$%s;
EOD;
            return PHP_EOL . sprintf($templateAttributes, $type, $field->isPrimary() ? PHP_EOL . '     * @Primary' : '', $field->isAutoIncrement() ? PHP_EOL . '     * @Identity' : '', $type, $field->getSize() ? ', length=' . $field->getSize() : '', $field->isNotNull() ? 'false' : 'true', $visibility, $fieldName) . PHP_EOL;
        } else {
            $templateAttributes = <<<EOD
    /**
     *
     * @var %s
     */
    %s \$%s;
EOD;
            return PHP_EOL . sprintf($templateAttributes, $type, $visibility, $fieldName) . PHP_EOL;
        }
    }
Example #3
0
 /**
  * Generates SQL to modify a column in a table.
  *
  * @param string $tableName
  * @param string $schemaName
  * @param mixed  $column
  * @param mixed  $currentColumn
  *
  * @return string
  */
 public function modifyColumn($tableName, $schemaName, \Phalcon\Db\ColumnInterface $column, \Phalcon\Db\ColumnInterface $currentColumn = null)
 {
     $sql = 'ALTER TABLE ' . $this->prepareTable($tableName, $schemaName) . ' ALTER COLUMN [' . $column->getName() . '] ' . $this->getColumnDefinition($column);
     if ($column->hasDefault()) {
         $defaultValue = $column->getDefault();
         if (strpos(strtoupper($defaultValue), 'CURRENT_TIMESTAMP') !== false) {
             $sql .= ' DEFAULT CURRENT_TIMESTAMP';
         } else {
             $sql .= ' DEFAULT "' . addcslashes($defaultValue, '"') . '"';
         }
     }
     if ($column->isNotNull()) {
         $sql .= ' NOT NULL';
     }
     if ($column->isAutoIncrement()) {
         $sql .= ' IDENTITY(1,1)';
     }
     return $sql;
 }