示例#1
0
 static function compareColumns(Column $fromColumn, Column $toColumn)
 {
     $changedProperties = array();
     // compare column types
     $fromDomain = $fromColumn->getDomain();
     $toDomain = $toColumn->getDomain();
     if ($fromDomain->getType() != $toDomain->getType()) {
         $changedProperties['type'] = array($fromDomain->getType(), $toDomain->getType());
     }
     if ($fromDomain->getScale() != $toDomain->getScale()) {
         $changedProperties['scale'] = array($fromDomain->getScale(), $toDomain->getScale());
     }
     if ($fromDomain->getSize() != $toDomain->getSize()) {
         $changedProperties['size'] = array($fromDomain->getSize(), $toDomain->getSize());
     }
     if (strtoupper($fromDomain->getSqlType()) != strtoupper($toDomain->getSqlType())) {
         $changedProperties['sqlType'] = array($fromDomain->getSqlType(), $toDomain->getSqlType());
     }
     if ($fromColumn->isNotNull() != $toColumn->isNotNull()) {
         $changedProperties['notNull'] = array($fromColumn->isNotNull(), $toColumn->isNotNull());
     }
     // compare column default value
     $fromDefaultValue = $fromColumn->getDefaultValue();
     $toDefaultValue = $toColumn->getDefaultValue();
     if ($fromDefaultValue && !$toDefaultValue) {
         $changedProperties['defaultValueType'] = array($fromDefaultValue->getType(), null);
         $changedProperties['defaultValueValue'] = array($fromDefaultValue->getValue(), null);
     } elseif (!$fromDefaultValue && $toDefaultValue) {
         $changedProperties['defaultValueType'] = array(null, $toDefaultValue->getType());
         $changedProperties['defaultValueValue'] = array(null, $toDefaultValue->getValue());
     } elseif ($fromDefaultValue && $toDefaultValue) {
         if (!$fromDefaultValue->equals($toDefaultValue)) {
             if ($fromDefaultValue->getType() != $toDefaultValue->getType()) {
                 $changedProperties['defaultValueType'] = array($fromDefaultValue->getType(), $toDefaultValue->getType());
             }
             if ($fromDefaultValue->getValue() != $toDefaultValue->getValue()) {
                 $changedProperties['defaultValueValue'] = array($fromDefaultValue->getValue(), $toDefaultValue->getValue());
             }
         }
     }
     if ($fromColumn->isAutoIncrement() != $toColumn->isAutoIncrement()) {
         $changedProperties['autoIncrement'] = array($fromColumn->isAutoIncrement(), $toColumn->isAutoIncrement());
     }
     return $changedProperties;
 }
 public function getColumnDDL(Column $col)
 {
     $domain = $col->getDomain();
     $ddl = array($this->quoteIdentifier($col->getName()));
     $sqlType = $domain->getSqlType();
     $table = $col->getTable();
     if ($col->isAutoIncrement() && $table && $table->getIdMethodParameters() == null) {
         $sqlType = $col->getType() === PropelTypes::BIGINT ? 'bigserial' : 'serial';
     }
     if ($this->hasSize($sqlType) && $col->isDefaultSqlType($this)) {
         $ddl[] = $sqlType . $domain->printSize();
     } else {
         $ddl[] = $sqlType;
     }
     if ($default = $this->getColumnDefaultValueDDL($col)) {
         $ddl[] = $default;
     }
     if ($notNull = $this->getNullString($col->isNotNull())) {
         $ddl[] = $notNull;
     }
     if ($autoIncrement = $col->getAutoIncrementString()) {
         $ddl[] = $autoIncrement;
     }
     return implode(' ', $ddl);
 }
示例#3
0
 /**
  * Check auto increment column
  *
  * @param Column $column Table column
  *
  * @return array Result
  */
 public function checkAutoIncrement(Column $column)
 {
     $result = [];
     if ($column->isAutoIncrement() === true && $column->isPrimaryKey() === false) {
         $result[] = ['type' => 'column', 'field' => $column->getField(), 'description' => 'Set as auto_increment but has no primary key'];
     }
     return $result;
 }