Exemple #1
0
 /** {@inheritdoc} */
 public function getNativeDatatype($type, $length = null, $cast = false)
 {
     if ($cast) {
         switch ($type) {
             case Column::TYPE_INTEGER:
                 return 'SIGNED';
             case Column::TYPE_VARCHAR:
                 if ($length === null) {
                     return 'CHAR';
                 } elseif (ctype_digit((string) $length)) {
                     return "CHAR({$length})";
                 } else {
                     throw new \InvalidArgumentException('Invalid length: ' . $length);
                 }
             case Column::TYPE_TIMESTAMP:
                 return 'DATETIME';
             case Column::TYPE_BOOL:
                 throw new \DomainException('Values cannot be cast to BOOL');
             case Column::TYPE_CLOB:
                 return 'CHAR';
             case Column::TYPE_BLOB:
                 return 'BINARY';
             case Column::TYPE_DECIMAL:
                 return str_replace('NUMERIC', 'DECIMAL', parent::getNativeDatatype($type, $length, $cast));
             case Column::TYPE_FLOAT:
                 return 'DECIMAL';
             default:
                 return parent::getNativeDatatype($type, $length, $cast);
         }
     } else {
         switch ($type) {
             case Column::TYPE_INTEGER:
                 if ($length == 8) {
                     return 'TINYINT';
                 }
                 return parent::getNativeDatatype($type, $length, $cast);
             case Column::TYPE_TIMESTAMP:
                 return 'DATETIME';
             case Column::TYPE_BOOL:
                 if (in_array(Column::TYPE_BOOL, $this->emulatedDatatypes)) {
                     return 'TINYINT';
                 } else {
                     throw new \DomainException('BOOL not supported by MySQL and not emulated');
                 }
             case Column::TYPE_CLOB:
                 return 'LONGTEXT';
             case Column::TYPE_BLOB:
                 return 'LONGBLOB';
             default:
                 return parent::getNativeDatatype($type, $length, $cast);
         }
     }
 }
Exemple #2
0
 /** {@inheritdoc} */
 public function getNativeDatatype($type, $length = null, $cast = false)
 {
     switch ($type) {
         case Column::TYPE_INTEGER:
             return 'INTEGER';
         case Column::TYPE_CLOB:
             return 'TEXT';
         case Column::TYPE_TIMESTAMP:
         case Column::TYPE_DATE:
             if (in_array($type, $this->emulatedDatatypes)) {
                 return 'TEXT';
             } else {
                 throw new \DomainException(strtoupper($type) . ' not supported by SQLite and not emulated');
             }
         case Column::TYPE_BOOL:
             if (in_array($type, $this->emulatedDatatypes)) {
                 return 'INTEGER';
             } else {
                 throw new \DomainException('BOOL not supported by SQLite and not emulated');
             }
         case Column::TYPE_DECIMAL:
             if (in_array($type, $this->emulatedDatatypes)) {
                 return 'REAL';
             } else {
                 throw new \DomainException('DECIMAL not supported by SQLite and not emulated');
             }
         case Column::TYPE_FLOAT:
             return 'REAL';
         default:
             // SQLite ignores $length, but stores it with the column
             // definition where it can later be reconstructed.
             return parent::getNativeDatatype($type, $length, $cast);
     }
 }
Exemple #3
0
 /** {@inheritdoc} */
 public function getNativeDatatype($type, $length = null, $cast = false)
 {
     switch ($type) {
         case Column::TYPE_TIMESTAMP:
             return 'TIMESTAMP(0)';
         case Column::TYPE_CLOB:
             return 'TEXT';
         case Column::TYPE_BLOB:
             return 'BYTEA';
         default:
             return parent::getNativeDatatype($type, $length, $cast);
     }
 }