diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index 9ee27c84d..007ac85a8 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -358,7 +358,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 7bae933a6..50ae0347f 100644 --- a/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/SchemaToolTest.php @@ -2,6 +2,7 @@ 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; @@ -163,6 +164,26 @@ class SchemaToolTest extends OrmTestCase $this->assertCount(1, $indexes, "there should be only one index"); $this->assertTrue(current($indexes)->isPrimary(), "index should be primary"); } + + 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()); + } } /**