public static function compareColumns(Column $fromColumn, Column $toColumn) { $changedProperties = array(); // compare column types $fromDomain = $fromColumn->getDomain(); $toDomain = $toColumn->getDomain(); if ($fromDomain->getType() != $toDomain->getType()) { if ($toColumn->getType() == PropelTypes::ENUM && $toColumn->getPhpType() == 'string') { // use MySQL native ENUM support } else { $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; }
static function compareColumns(Column $fromColumn, Column $toColumn) { $changedProperties = array(); // compare column types $fromDomain = $fromColumn->getDomain(); $toDomain = $toColumn->getDomain(); if ($fromDomain->getSqlType() != $toDomain->getSqlType()) { $changedProperties['type'] = array($fromDomain->getSqlType(), $toDomain->getSqlType()); } 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 ($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; }
protected function getAccessorLazyLoadSnippet(Column $col) { if ($col->isLazyLoad()) { $clo = strtolower($col->getName()); $defaultValueString = 'null'; $def = $col->getDefaultValue(); if ($def !== null && !$def->isExpression()) { $defaultValueString = $this->getDefaultValueString($col); } return "\n\t\tif (!\$this->{$clo}_isLoaded && \$this->{$clo} === {$defaultValueString} && !\$this->isNew()) {\n\t\t\t\$this->load{$col->getPhpName()}(\$con);\n\t\t}\n"; } }
/** * Add comment about the attribute (variable) that stores column values * @param string &$script The script will be modified in this method. * @param Column $col **/ protected function addColumnAttributeComment(&$script, Column $col) { $cptype = $col->getPhpType(); $clo = strtolower($col->getName()); $script .= "\n\t/**\n\t * The value for the {$clo} field."; if ($col->getDefaultValue()) { if ($col->getDefaultValue()->isExpression()) { $script .= "\n\t * Note: this column has a database default value of: (expression) " . $col->getDefaultValue()->getValue(); } else { $script .= "\n\t * Note: this column has a database default value of: " . $this->getDefaultValueString($col); } } $script .= "\n\t * @var {$cptype}\n\t */"; }
/** * Returns the SQL for the default value of a Column object * @return string */ public function getColumnDefaultValueDDL(Column $col) { $default = ''; $defaultValue = $col->getDefaultValue(); if ($defaultValue !== null) { $default .= 'DEFAULT '; if ($defaultValue->isExpression()) { $default .= $defaultValue->getValue(); } else { if ($col->isTextType()) { $default .= $this->quote($defaultValue->getValue()); } elseif ($col->getType() == PropelTypes::BOOLEAN || $col->getType() == PropelTypes::BOOLEAN_EMU) { $default .= $this->getBooleanString($defaultValue->getValue()); } elseif ($col->getType() == PropelTypes::ENUM) { $default .= array_search($defaultValue->getValue(), $col->getValueSet()); } else { $default .= $defaultValue->getValue(); } } } return $default; }