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); }
/** * 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; }