コード例 #1
0
 /**
  * Converts value for some column types
  *
  * @param  mixed     $value  The value to convert
  * @param  ColumnMap $colMap The ColumnMap object
  * @return mixed     The converted value
  */
 protected function convertValueForColumn($value, ColumnMap $colMap)
 {
     if ($colMap->getType() == 'OBJECT' && is_object($value)) {
         if (is_array($value)) {
             $value = array_map('serialize', $value);
         } else {
             $value = serialize($value);
         }
     } elseif ('ARRAY' === $colMap->getType() && is_array($value)) {
         $value = '| ' . implode(' | ', $value) . ' |';
     } elseif ('ENUM' === $colMap->getType()) {
         if (is_array($value)) {
             $value = array_map(array($colMap, 'getValueSetKey'), $value);
         } else {
             $value = $colMap->getValueSetKey($value);
         }
     }
     return $value;
 }
コード例 #2
0
ファイル: PdoAdapter.php プロジェクト: bondarovich/Propel2
 /**
  * Formats a temporal value before binding, given a ColumnMap object
  *
  * @param mixed     $value The temporal value
  * @param ColumnMap $cMap
  *
  * @return string The formatted temporal value
  */
 public function formatTemporalValue($value, ColumnMap $cMap)
 {
     /** @var $dt PropelDateTime */
     if ($dt = PropelDateTime::newInstance($value)) {
         switch ($cMap->getType()) {
             case PropelTypes::TIMESTAMP:
             case PropelTypes::BU_TIMESTAMP:
                 $value = $dt->format($this->getTimestampFormatter());
                 break;
             case PropelTypes::DATE:
             case PropelTypes::BU_DATE:
                 $value = $dt->format($this->getDateFormatter());
                 break;
             case PropelTypes::TIME:
                 $value = $dt->format($this->getTimeFormatter());
                 break;
         }
     }
     return $value;
 }
コード例 #3
0
ファイル: ModelCriteria.php プロジェクト: smoqs/Propel2
 /**
  * Converts value for some column types
  *
  * @param  mixed     $value  The value to convert
  * @param  ColumnMap $colMap The ColumnMap object
  * @return mixed     The converted value
  */
 protected function convertValueForColumn($value, ColumnMap $colMap)
 {
     if ($colMap->getType() == 'OBJECT' && is_object($value)) {
         if (is_array($value)) {
             $value = array_map('serialize', $value);
         } else {
             $value = serialize($value);
         }
     } elseif ('ARRAY' === $colMap->getType() && is_array($value)) {
         $value = '| ' . implode(' | ', $value) . ' |';
     } elseif (PropelTypes::ENUM === $colMap->getType() && !is_null($value)) {
         if (is_array($value)) {
             $value = array_map([$colMap, 'getValueSetKey'], $value);
         } else {
             $value = $colMap->getValueSetKey($value);
         }
     } elseif ($colMap->isSetType() && !is_null($value)) {
         try {
             $value = SetColumnConverter::convertToInt($value, $colMap->getValueSet());
         } catch (SetColumnConverterException $e) {
             throw new PropelException(sprintf('Value "%s" is not accepted in this set column', $e->getValue()), $e->getCode(), $e);
         }
     }
     return $value;
 }
コード例 #4
0
ファイル: OracleAdapter.php プロジェクト: bondarovich/Propel2
 /**
  * @see AdapterInterface::bindValue()
  *
  * @param StatementInterface $stmt
  * @param string             $parameter
  * @param mixed              $value
  * @param ColumnMap          $cMap
  * @param null|integer       $position
  *
  * @return boolean
  */
 public function bindValue(StatementInterface $stmt, $parameter, $value, ColumnMap $cMap, $position = null)
 {
     if (PropelTypes::CLOB_EMU === $cMap->getType()) {
         return $stmt->bindParam(':p' . $position, $value, $cMap->getPdoType(), strlen($value));
     }
     if ($cMap->isTemporal()) {
         $value = $this->formatTemporalValue($value, $cMap);
     } elseif (is_resource($value) && $cMap->isLob()) {
         // we always need to make sure that the stream is rewound, otherwise nothing will
         // get written to database.
         rewind($value);
     }
     return $stmt->bindValue($parameter, $value, $cMap->getPdoType());
 }
コード例 #5
0
 /**
  * @param ColumnMap $column
  * @return \Closure|null
  */
 public function guessFormat(ColumnMap $column)
 {
     $generator = $this->generator;
     if ($column->isTemporal()) {
         if ($column->getType() == PropelTypes::BU_DATE || $column->getType() == PropelTypes::BU_TIMESTAMP) {
             return function () use($generator) {
                 return $generator->dateTime;
             };
         } else {
             return function () use($generator) {
                 return $generator->dateTimeAD;
             };
         }
     }
     $type = $column->getType();
     switch ($type) {
         case PropelTypes::BOOLEAN:
         case PropelTypes::BOOLEAN_EMU:
             return function () use($generator) {
                 return $generator->boolean;
             };
         case PropelTypes::NUMERIC:
         case PropelTypes::DECIMAL:
             $size = $column->getSize();
             return function () use($generator, $size) {
                 return $generator->randomNumber($size + 2) / 100;
             };
         case PropelTypes::TINYINT:
             return function () {
                 return mt_rand(0, 127);
             };
         case PropelTypes::SMALLINT:
             return function () {
                 return mt_rand(0, 32767);
             };
         case PropelTypes::INTEGER:
             return function () {
                 return mt_rand(0, intval('2147483647'));
             };
         case PropelTypes::BIGINT:
             return function () {
                 return mt_rand(0, intval('9223372036854775807'));
             };
         case PropelTypes::FLOAT:
             return function () {
                 return mt_rand(0, intval('2147483647')) / mt_rand(1, intval('2147483647'));
             };
         case PropelTypes::DOUBLE:
         case PropelTypes::REAL:
             return function () {
                 return mt_rand(0, intval('9223372036854775807')) / mt_rand(1, intval('9223372036854775807'));
             };
         case PropelTypes::CHAR:
         case PropelTypes::VARCHAR:
         case PropelTypes::BINARY:
         case PropelTypes::VARBINARY:
             $size = $column->getSize();
             return function () use($generator, $size) {
                 return $generator->text($size);
             };
         case PropelTypes::LONGVARCHAR:
         case PropelTypes::LONGVARBINARY:
         case PropelTypes::CLOB:
         case PropelTypes::CLOB_EMU:
         case PropelTypes::BLOB:
             return function () use($generator) {
                 return $generator->text;
             };
         case PropelTypes::ENUM:
             $valueSet = $column->getValueSet();
             return function () use($generator, $valueSet) {
                 return $generator->randomElement($valueSet);
             };
         case PropelTypes::OBJECT:
         case PropelTypes::PHP_ARRAY:
         default:
             // no smart way to guess what the user expects here
             return null;
     }
 }