From 741da6eed728af2d045de0eed009dde0c34abc78 Mon Sep 17 00:00:00 2001 From: Sergey Fedotov Date: Thu, 21 Apr 2016 18:28:04 +0300 Subject: [PATCH] Fix undefined index for discriminator column in SchemaTool --- lib/Doctrine/ORM/Tools/SchemaTool.php | 2 +- .../Tests/ORM/Tools/SchemaToolTest.php | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) 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()); + } } /**