diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index b8e62739b..5c222be65 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -345,7 +345,7 @@ class SchemaTool $discrColumn = $class->discriminatorColumn; if ( ! isset($discrColumn['type']) || - (strtolower($discrColumn['type']) == 'string' && $discrColumn['length'] === null) + (strtolower($discrColumn['type']) == 'string' && ! isset($discrColumn['length'])) ) { $discrColumn['type'] = 'string'; $discrColumn['length'] = 255; diff --git a/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php b/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php index 2bd9916ce..6cce06e21 100644 --- a/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php @@ -2,6 +2,9 @@ namespace Doctrine\Tests\ORM\Tools; +use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs; +use Doctrine\ORM\Tools\Event\GenerateSchemaTableEventArgs; use Doctrine\ORM\Tools\SchemaTool; use Doctrine\ORM\Tools\ToolEvents; use Doctrine\ORM\Tools\Event\GenerateSchemaTableEventArgs; @@ -138,6 +141,26 @@ class SchemaToolTest extends \Doctrine\Tests\OrmTestCase $this->assertTrue($table->hasIndex('primary')); $this->assertTrue($table->hasIndex('uniq_hash')); } + + public function testSetDiscriminatorColumnWithoutLength() + { + $em = $this->_getTestEntityManager(); + $schemaTool = new SchemaTool($em); + $metadata = $em->getClassMetadata(__NAMESPACE__ . '\\FirstEntity'); + + $metadata->setInheritanceType(ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE); + $metadata->setDiscriminatorColumn(['name' => 'discriminator', 'type' => 'string']); + + $schema = $schemaTool->getSchemaFromMetadata([$metadata]); + + $this->assertTrue($schema->hasTable('first_entity')); + $table = $schema->getTable('first_entity'); + + $this->assertTrue($table->hasColumn('discriminator')); + $column = $table->getColumn('discriminator'); + + $this->assertEquals(255, $column->getLength()); + } } /**