Commit 869f7daa authored by Benjamin Eberlei's avatar Benjamin Eberlei

[DBAL-461] Add support for NUMERIC(N, M) type syntax in SQL Server.

parent 143c2510
...@@ -59,10 +59,10 @@ abstract class AbstractSchemaManager ...@@ -59,10 +59,10 @@ abstract class AbstractSchemaManager
* *
* @param \Doctrine\DBAL\Connection $conn * @param \Doctrine\DBAL\Connection $conn
*/ */
public function __construct(\Doctrine\DBAL\Connection $conn) public function __construct(\Doctrine\DBAL\Connection $conn, AbstractPlatform $platform = null)
{ {
$this->_conn = $conn; $this->_conn = $conn;
$this->_platform = $this->_conn->getDatabasePlatform(); $this->_platform = $platform ?: $this->_conn->getDatabasePlatform();
} }
/** /**
......
...@@ -49,7 +49,7 @@ class SQLServerSchemaManager extends AbstractSchemaManager ...@@ -49,7 +49,7 @@ class SQLServerSchemaManager extends AbstractSchemaManager
*/ */
protected function _getPortableTableColumnDefinition($tableColumn) protected function _getPortableTableColumnDefinition($tableColumn)
{ {
$dbType = $tableColumn['type']; $dbType = strtok($tableColumn['type'], '(), ');
$fixed = null; $fixed = null;
$length = (int) $tableColumn['length']; $length = (int) $tableColumn['length'];
$default = $tableColumn['default']; $default = $tableColumn['default'];
......
<?php
namespace Doctrine\Tests\DBAL\Functional\Ticket;
use Doctrine\DBAL\Schema\SQLServerSchemaManager;
/**
* @group DBAL-461
*/
class DBAL461Test extends \PHPUnit_Framework_TestCase
{
public function testIssue()
{
$conn = $this->getMock('Doctrine\DBAL\Connection', array(), array(), '', false);
$platform = $this->getMockForAbstractClass('Doctrine\DBAL\Platforms\AbstractPlatform');
$platform->registerDoctrineTypeMapping('numeric', 'decimal');
$schemaManager = new SQLServerSchemaManager($conn, $platform);
$reflectionMethod = new \ReflectionMethod($schemaManager, '_getPortableTableColumnDefinition');
$reflectionMethod->setAccessible(true);
$column = $reflectionMethod->invoke($schemaManager, array(
'type' => 'numeric(18,0)',
'length' => null,
'default' => null,
'notnull' => false,
'scale' => 18,
'precision' => 0,
'autoincrement' => false,
'collation' => 'foo',
));
$this->assertEquals('Decimal', (string)$column->getType());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment