1
0
mirror of synced 2024-12-14 07:06:04 +03:00

DDC-958 - Fire postLoad event when calling refresh().

This commit is contained in:
Benjamin Eberlei 2011-01-23 17:26:11 +01:00
parent be2e00c991
commit ed53f8aa74
2 changed files with 32 additions and 1 deletions

View File

@ -28,7 +28,9 @@ use PDO,
Doctrine\ORM\Query,
Doctrine\ORM\PersistentCollection,
Doctrine\ORM\Mapping\MappingException,
Doctrine\ORM\Mapping\ClassMetadata;
Doctrine\ORM\Mapping\ClassMetadata,
Doctrine\ORM\Events,
Doctrine\ORM\Event\LifecycleEventArgs;
/**
* A BasicEntityPersiter maps an entity to a single table in a relational database.
@ -704,6 +706,14 @@ class BasicEntityPersister
}
$this->_em->getUnitOfWork()->setOriginalEntityData($entity, $newData);
if (isset($this->_class->lifecycleCallbacks[Events::postLoad])) {
$this->_class->invokeLifecycleCallbacks(Events::postLoad, $entity);
}
$evm = $this->_em->getEventManager();
if ($evm->hasListeners(Events::postLoad)) {
$evm->dispatchEvent(Events::postLoad, new LifecycleEventArgs($entity, $this->_em));
}
}
/**

View File

@ -82,6 +82,27 @@ class LifecycleCallbackTest extends \Doctrine\Tests\OrmFunctionalTestCase
$this->assertTrue($reference->postLoadCallbackInvoked);
}
/**
* @group DDC-958
*/
public function testPostLoadTriggeredOnRefresh()
{
$entity = new LifecycleCallbackTestEntity;
$entity->value = 'hello';
$this->_em->persist($entity);
$this->_em->flush();
$id = $entity->getId();
$this->_em->clear();
$reference = $this->_em->find('Doctrine\Tests\ORM\Functional\LifecycleCallbackTestEntity', $id);
$this->assertTrue($reference->postLoadCallbackInvoked);
$reference->postLoadCallbackInvoked = false;
$this->_em->refresh($reference);
$this->assertTrue($reference->postLoadCallbackInvoked, "postLoad should be invoked when refresh() is called.");
}
/**
* @group DDC-113
*/