1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
<?php
namespace Wikimedia\Rdbms;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\PhpIntegerMappingType;
use Doctrine\DBAL\Types\Type;
/**
* Handling smallest integer data type
*/
class TinyIntType extends Type implements PhpIntegerMappingType {
public const TINYINT = 'mwtinyint';
public function getSQLDeclaration( array $fieldDeclaration, AbstractPlatform $platform ) {
if ( $platform->getName() == 'mysql' ) {
if ( !empty( $fieldDeclaration['length'] ) && is_numeric( $fieldDeclaration['length'] ) ) {
$length = $fieldDeclaration['length'];
return "TINYINT($length)" . $this->getCommonIntegerTypeDeclarationForMySQL( $fieldDeclaration );
}
return 'TINYINT' . $this->getCommonIntegerTypeDeclarationForMySQL( $fieldDeclaration );
}
return $platform->getSmallIntTypeDeclarationSQL( $fieldDeclaration );
}
protected function getCommonIntegerTypeDeclarationForMySQL( array $columnDef ) {
$autoinc = '';
if ( !empty( $columnDef['autoincrement'] ) ) {
$autoinc = ' AUTO_INCREMENT';
}
return !empty( $columnDef['unsigned'] ) ? ' UNSIGNED' . $autoinc : $autoinc;
}
public function getName() {
return self::TINYINT;
}
}
|