Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5cd8334

Browse files
committed
fix EntityGenerator RegenerateEntityIfExists
1 parent 60bacda commit 5cd8334

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

lib/Doctrine/ORM/Tools/EntityGenerator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ protected function parseTokensInEntityFile($src)
849849
*/
850850
protected function hasProperty($property, ClassMetadataInfo $metadata)
851851
{
852-
if ($this->extendsClass() || class_exists($metadata->name)) {
852+
if ($this->extendsClass() || (!$this->isNew && class_exists($metadata->name))) {
853853
// don't generate property if its already on the base class.
854854
$reflClass = new \ReflectionClass($this->getClassToExtend() ?: $metadata->name);
855855
if ($reflClass->hasProperty($property)) {
@@ -878,7 +878,7 @@ protected function hasProperty($property, ClassMetadataInfo $metadata)
878878
*/
879879
protected function hasMethod($method, ClassMetadataInfo $metadata)
880880
{
881-
if ($this->extendsClass() || class_exists($metadata->name)) {
881+
if ($this->extendsClass() || (!$this->isNew && class_exists($metadata->name))) {
882882
// don't generate method if its already on the base class.
883883
$reflClass = new \ReflectionClass($this->getClassToExtend() ?: $metadata->name);
884884

tests/Doctrine/Tests/ORM/Tools/EntityGeneratorTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,24 @@ public function testGeneratedImmutableEmbeddablesClass()
937937
$this->assertTrue($reflParameters[3]->isOptional());
938938
}
939939

940+
public function testRegenerateEntityClass()
941+
{
942+
$metadata = $this->generateBookEntityFixture();
943+
$this->loadEntityClass($metadata);
944+
945+
$className = basename(str_replace('\\', '/', $metadata->name));
946+
$path = $this->_tmpDir . '/' . $this->_namespace . '/' . $className . '.php';
947+
$classTest = file_get_contents($path);
948+
949+
$this->_generator->setRegenerateEntityIfExists(true);
950+
$this->_generator->setBackupExisting(false);
951+
952+
$this->_generator->writeEntityClass($metadata, $this->_tmpDir);
953+
$classNew = file_get_contents($path);
954+
955+
$this->assertSame($classTest,$classNew);
956+
}
957+
940958
/**
941959
* @return array
942960
*/

0 commit comments

Comments
 (0)