Skip to content

Commit

Permalink
Replace BooleanType by TinyIntType (doctrine#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
bburnichon committed Nov 20, 2017
1 parent 1b873ba commit 139e80f
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 1 deletion.
7 changes: 6 additions & 1 deletion lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,11 @@ public function getSmallIntTypeDeclarationSQL(array $field)
return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
}

public function getTinyIntTypeDeclarationSQL(array $field)
{
return 'TINYINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
}

/**
* {@inheritDoc}
*/
Expand Down Expand Up @@ -979,7 +984,7 @@ public function getReadLockSQL()
protected function initializeDoctrineTypeMappings()
{
$this->doctrineTypeMapping = array(
'tinyint' => 'boolean',
'tinyint' => 'tinyint',
'smallint' => 'smallint',
'mediumint' => 'integer',
'int' => 'integer',
Expand Down
5 changes: 5 additions & 0 deletions lib/Doctrine/DBAL/Types/BooleanType.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,9 @@ public function getBindingType()
{
return \PDO::PARAM_BOOL;
}

public function requiresSQLCommentHint(AbstractPlatform $platform)
{
return true;
}
}
62 changes: 62 additions & 0 deletions lib/Doctrine/DBAL/Types/TinyIntType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/

namespace Doctrine\DBAL\Types;

use Doctrine\DBAL\Platforms\AbstractPlatform;

/**
* Type that maps a database TINYINT to a PHP integer.
*
* @author robo
*/
class TinyIntType extends Type
{
/**
* {@inheritdoc}
*/
public function getName()
{
return Type::TINYINT;
}

/**
* {@inheritdoc}
*/
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
{
return $platform->getTinyIntTypeDeclarationSQL($fieldDeclaration);
}

/**
* {@inheritdoc}
*/
public function convertToPHPValue($value, AbstractPlatform $platform)
{
return (null === $value) ? null : (int) $value;
}

/**
* {@inheritdoc}
*/
public function getBindingType()
{
return \PDO::PARAM_INT;
}
}
2 changes: 2 additions & 0 deletions lib/Doctrine/DBAL/Types/Type.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ abstract class Type
const INTEGER = 'integer';
const OBJECT = 'object';
const SMALLINT = 'smallint';
const TINYINT = 'tinyint';
const STRING = 'string';
const TEXT = 'text';
const BINARY = 'binary';
Expand Down Expand Up @@ -73,6 +74,7 @@ abstract class Type
self::BOOLEAN => 'Doctrine\DBAL\Types\BooleanType',
self::INTEGER => 'Doctrine\DBAL\Types\IntegerType',
self::SMALLINT => 'Doctrine\DBAL\Types\SmallIntType',
self::TINYINT => 'Doctrine\DBAL\Types\TinyIntType',
self::BIGINT => 'Doctrine\DBAL\Types\BigIntType',
self::STRING => 'Doctrine\DBAL\Types\StringType',
self::TEXT => 'Doctrine\DBAL\Types\TextType',
Expand Down

0 comments on commit 139e80f

Please sign in to comment.