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; }
/** * Adds the comment for a mutator * @param string &$script The script will be modified in this method. * @param Column $col The current column. * @see addMutatorOpen() **/ public function addMutatorComment(&$script, Column $col) { $clo = strtolower($col->getName()); $script .= "\n\t/**\n\t * Set the value of [{$clo}] column.\n\t * " . $col->getDescription() . "\n\t * @param " . $col->getPhpType() . " \$v new value\n\t * @return " . $this->getObjectClassname() . " The current object (for fluent API support)\n\t */"; }
/** * Adds a setter for Enum columns. * @param string &$script The script will be modified in this method. * @param Column $col The current column. * @see parent::addColumnMutators() */ protected function addEnumMutator(&$script, Column $col) { $clo = strtolower($col->getName()); $script .= "\n /**\n * Set the value of [{$clo}] column.\n * " . $col->getDescription() . "\n * @param " . $col->getPhpType() . " \$v new value\n * @return " . $this->getObjectClassname() . " The current object (for fluent API support)\n * @throws PropelException - if the value is not accepted by this enum.\n */"; $this->addMutatorOpenOpen($script, $col); $this->addMutatorOpenBody($script, $col); $script .= "\n if (\$v !== null) {\n \$valueSet = " . $this->getPeerClassname() . "::getValueSet(" . $this->getColumnConstant($col) . ");\n if (!in_array(\$v, \$valueSet)) {\n throw new PropelException(sprintf('Value \"%s\" is not accepted in this enumerated column', \$v));\n }\n \$v = array_search(\$v, \$valueSet);\n }\n\n if (\$this->{$clo} !== \$v) {\n \$this->{$clo} = \$v;\n \$this->modifiedColumns[] = " . $this->getColumnConstant($col) . ";\n }\n"; $this->addMutatorClose($script, $col); }
/** * Adds the comment for a mutator * @param string &$script The script will be modified in this method. * @param Column $col The current column. * @see addMutatorOpen() **/ protected function addMutatorComment(&$script, Column $col) { $clo = strtolower($col->getName()); $script .= " /** * Set the value of [$clo] column. * ".$col->getDescription()." * @param ".$col->getPhpType()." \$v new value * @return ".$this->getObjectClassname()." The current object (for fluent API support) */"; }
/** * 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) { $v = array_search($defaultValue->getValue(), $col->getValueSet()); if ($col->getPhpType() == 'string') { $v = "'{$v}'"; } $default .= $v; } elseif ($col->isPhpArrayType()) { $value = $this->getPhpArrayString($defaultValue->getValue()); if (null === $value) { $default = ''; } else { $default .= $value; } } else { $default .= $defaultValue->getValue(); } } } return $default; }