diff --git a/lib/Doctrine/ORM/Tools/EntityGenerator.php b/lib/Doctrine/ORM/Tools/EntityGenerator.php index 8d1f05ac1..fafa51f3d 100644 --- a/lib/Doctrine/ORM/Tools/EntityGenerator.php +++ b/lib/Doctrine/ORM/Tools/EntityGenerator.php @@ -1731,8 +1731,12 @@ public function __construct() $embedded = ['class="' . $embeddedClass['class'] . '"']; - if (isset($fieldMapping['columnPrefix'])) { - $embedded[] = 'columnPrefix=' . var_export($embeddedClass['columnPrefix'], true); + if (isset($embeddedClass['columnPrefix'])) { + if (is_string($embeddedClass['columnPrefix'])) { + $embedded[] = 'columnPrefix="' . $embeddedClass['columnPrefix'] . '"'; + } else { + $embedded[] = 'columnPrefix=' . var_export($embeddedClass['columnPrefix'], true); + } } $lines[] = $this->spaces . ' * @' . diff --git a/tests/Doctrine/Tests/ORM/Tools/EntityGeneratorTest.php b/tests/Doctrine/Tests/ORM/Tools/EntityGeneratorTest.php index 5a9f451fe..f2d74d043 100644 --- a/tests/Doctrine/Tests/ORM/Tools/EntityGeneratorTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/EntityGeneratorTest.php @@ -119,7 +119,7 @@ class EntityGeneratorTest extends OrmTestCase /** * @return ClassMetadataInfo */ - private function generateIsbnEmbeddableFixture(array $embeddedClasses = []) + private function generateIsbnEmbeddableFixture(array $embeddedClasses = [], $columnPrefix = null) { $metadata = new ClassMetadataInfo($this->_namespace . '\EntityGeneratorIsbn'); $metadata->namespace = $this->_namespace; @@ -131,7 +131,7 @@ class EntityGeneratorTest extends OrmTestCase $metadata->mapField(['fieldName' => 'checkDigit', 'type' => 'integer']); foreach ($embeddedClasses as $fieldName => $embeddedClass) { - $this->mapEmbedded($fieldName, $metadata, $embeddedClass); + $this->mapEmbedded($fieldName, $metadata, $embeddedClass, $columnPrefix); } $this->_generator->writeEntityClass($metadata, $this->_tmpDir); @@ -224,6 +224,39 @@ class EntityGeneratorTest extends OrmTestCase return new $metadata->name; } + /** + * @group GH-6314 + */ + public function testEmbeddedEntityWithNamedColumnPrefix() + { + $columnPrefix = 'GH6314Prefix_'; + $testMetadata = $this->generateTestEmbeddableFixture(); + $isbnMetadata = $this->generateIsbnEmbeddableFixture(['testEmbedded' => $testMetadata], $columnPrefix); + $isbnEntity = $this->newInstance($isbnMetadata); + $refClass = new \ReflectionClass($isbnEntity); + self::assertTrue($refClass->hasProperty('testEmbedded')); + + $docComment = $refClass->getProperty('testEmbedded')->getDocComment(); + $needle = sprintf('@Embedded(class="%s", columnPrefix="%s")', $testMetadata->name, $columnPrefix); + self::assertContains($needle, $docComment); + } + + /** + * @group GH-6314 + */ + public function testEmbeddedEntityWithoutColumnPrefix() + { + $testMetadata = $this->generateTestEmbeddableFixture(); + $isbnMetadata = $this->generateIsbnEmbeddableFixture(['testEmbedded' => $testMetadata], false); + $isbnEntity = $this->newInstance($isbnMetadata); + $refClass = new \ReflectionClass($isbnEntity); + self::assertTrue($refClass->hasProperty('testEmbedded')); + + $docComment = $refClass->getProperty('testEmbedded')->getDocComment(); + $needle = sprintf('@Embedded(class="%s", columnPrefix=false)', $testMetadata->name); + self::assertContains($needle, $docComment); + } + public function testGeneratedEntityClass() { $testMetadata = $this->generateTestEmbeddableFixture();