/**
  * Compute and return the difference between two column objects
  *
  * @param Column $fromColumn
  * @param Column $toColumn
  *
  * @return PropelColumnDiff|boolean return false if the two columns are similar
  */
 public static function computeDiff(Column $fromColumn, Column $toColumn)
 {
     if ($changedProperties = self::compareColumns($fromColumn, $toColumn)) {
         $columnDiff = new PropelColumnDiff();
         $columnDiff->setFromColumn($fromColumn);
         $columnDiff->setToColumn($toColumn);
         $columnDiff->setChangedProperties($changedProperties);
         return $columnDiff;
     } else {
         return false;
     }
 }
 /**
  * Compute and return the difference between two column objects
  *
  * @param Column $fromColumn
  * @param Column $toColumn
  *
  * @return PropelColumnDiff|boolean return false if the two columns are similar
  */
 public static function computeDiff(Column $fromColumn, Column $toColumn)
 {
     if ($changedProperties = self::compareColumns($fromColumn, $toColumn)) {
         if ($fromColumn->hasPlatform() || $toColumn->hasPlatform()) {
             $platform = $fromColumn->hasPlatform() ? $fromColumn->getPlatform() : $toColumn->getPlatform();
             if ($platform->getColumnDDL($fromColumn) == $platform->getColumnDDl($toColumn)) {
                 return false;
             }
         }
         $columnDiff = new PropelColumnDiff();
         $columnDiff->setFromColumn($fromColumn);
         $columnDiff->setToColumn($toColumn);
         $columnDiff->setChangedProperties($changedProperties);
         return $columnDiff;
     } else {
         return false;
     }
 }
 /**
  * Builds the DDL SQL to modify a column
  *
  * @return     string
  */
 public function getModifyColumnDDL(PropelColumnDiff $columnDiff)
 {
     return $this->getChangeColumnDDL($columnDiff->getFromColumn(), $columnDiff->getToColumn());
 }
 /**
  * Overrides the implementation from DefaultPlatform
  *
  * @author     Niklas Närhinen <*****@*****.**>
  * @return string
  * @see        DefaultPlatform::getModifyColumnDDL
  */
 public function getModifyColumnDDL(PropelColumnDiff $columnDiff)
 {
     $ret = '';
     $changedProperties = $columnDiff->getChangedProperties();
     $toColumn = $columnDiff->getToColumn();
     $table = $toColumn->getTable();
     $colName = $this->quoteIdentifier($toColumn->getName());
     $pattern = "\nALTER TABLE %s ALTER COLUMN %s;\n";
     foreach ($changedProperties as $key => $property) {
         switch ($key) {
             case 'defaultValueType':
                 continue;
             case 'size':
             case 'type':
             case 'scale':
                 $sqlType = $toColumn->getDomain()->getSqlType();
                 if ($toColumn->isAutoIncrement() && $table && $table->getIdMethodParameters() == null) {
                     $sqlType = $toColumn->getType() === PropelTypes::BIGINT ? 'bigserial' : 'serial';
                 }
                 if ($this->hasSize($sqlType)) {
                     $sqlType .= $toColumn->getDomain()->printSize();
                 }
                 $ret .= sprintf($pattern, $this->quoteIdentifier($table->getName()), $colName . ' TYPE ' . $sqlType);
                 break;
             case 'defaultValueValue':
                 if ($property[0] !== null && $property[1] === null) {
                     $ret .= sprintf($pattern, $this->quoteIdentifier($table->getName()), $colName . ' DROP DEFAULT');
                 } else {
                     $ret .= sprintf($pattern, $this->quoteIdentifier($table->getName()), $colName . ' SET ' . $this->getColumnDefaultValueDDL($toColumn));
                 }
                 break;
             case 'notNull':
                 $notNull = " DROP NOT NULL";
                 if ($property[1]) {
                     $notNull = " SET NOT NULL";
                 }
                 $ret .= sprintf($pattern, $this->quoteIdentifier($table->getName()), $colName . $notNull);
                 break;
         }
     }
     return $ret;
 }
Exemple #5
0
 /**
  * Builds the DDL SQL to modify a column
  *
  * @return     string
  */
 public function getModifyColumnDDL(PropelColumnDiff $columnDiff)
 {
     $toColumn = $columnDiff->getToColumn();
     $pattern = "\nALTER TABLE %s MODIFY %s;\n";
     return sprintf($pattern, $this->quoteIdentifier($toColumn->getTable()->getName()), $this->getColumnDDL($toColumn));
 }