Merge branch 'DDC-2173'
This commit is contained in:
commit
c20cfed6ae
@ -1,3 +1,11 @@
|
|||||||
|
# Upgrade to 2.4
|
||||||
|
|
||||||
|
## OnFlush and PreFlush event always called
|
||||||
|
|
||||||
|
Before 2.4 the preFlush and onFlush events were only called when there were
|
||||||
|
actually entities that changed. Now these events are called no matter if there
|
||||||
|
are entities in the UoW or changes are found.
|
||||||
|
|
||||||
# Upgrade to 2.3
|
# Upgrade to 2.3
|
||||||
|
|
||||||
## EntityManager#find() not calls EntityRepository#find() anymore
|
## EntityManager#find() not calls EntityRepository#find() anymore
|
||||||
|
@ -287,6 +287,9 @@ class UnitOfWork implements PropertyChangedListener
|
|||||||
$this->collectionUpdates ||
|
$this->collectionUpdates ||
|
||||||
$this->collectionDeletions ||
|
$this->collectionDeletions ||
|
||||||
$this->orphanRemovals)) {
|
$this->orphanRemovals)) {
|
||||||
|
$this->dispatchOnFlushEvent();
|
||||||
|
$this->dispatchPostFlushEvent();
|
||||||
|
|
||||||
return; // Nothing to do.
|
return; // Nothing to do.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,10 +299,7 @@ class UnitOfWork implements PropertyChangedListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Raise onFlush
|
$this->dispatchOnFlushEvent();
|
||||||
if ($this->evm->hasListeners(Events::onFlush)) {
|
|
||||||
$this->evm->dispatchEvent(Events::onFlush, new Event\OnFlushEventArgs($this->em));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now we need a commit order to maintain referential integrity
|
// Now we need a commit order to maintain referential integrity
|
||||||
$commitOrder = $this->getCommitOrder();
|
$commitOrder = $this->getCommitOrder();
|
||||||
@ -354,10 +354,7 @@ class UnitOfWork implements PropertyChangedListener
|
|||||||
$coll->takeSnapshot();
|
$coll->takeSnapshot();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Raise postFlush
|
$this->dispatchPostFlushEvent();
|
||||||
if ($this->evm->hasListeners(Events::postFlush)) {
|
|
||||||
$this->evm->dispatchEvent(Events::postFlush, new Event\PostFlushEventArgs($this->em));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear up
|
// Clear up
|
||||||
$this->entityInsertions =
|
$this->entityInsertions =
|
||||||
@ -3153,4 +3150,18 @@ class UnitOfWork implements PropertyChangedListener
|
|||||||
|
|
||||||
return isset($this->readOnlyObjects[spl_object_hash($object)]);
|
return isset($this->readOnlyObjects[spl_object_hash($object)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function dispatchOnFlushEvent()
|
||||||
|
{
|
||||||
|
if ($this->evm->hasListeners(Events::onFlush)) {
|
||||||
|
$this->evm->dispatchEvent(Events::onFlush, new Event\OnFlushEventArgs($this->em));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function dispatchPostFlushEvent()
|
||||||
|
{
|
||||||
|
if ($this->evm->hasListeners(Events::postFlush)) {
|
||||||
|
$this->evm->dispatchEvent(Events::postFlush, new Event\PostFlushEventArgs($this->em));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,26 @@ class FlushEventTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
//echo "SECOND FLUSH";
|
//echo "SECOND FLUSH";
|
||||||
//$this->_em->flush();
|
//$this->_em->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group DDC-2173
|
||||||
|
*/
|
||||||
|
public function testPreAndOnFlushCalledAlways()
|
||||||
|
{
|
||||||
|
$listener = new OnFlushCalledListener();
|
||||||
|
$this->_em->getEventManager()->addEventListener(Events::onFlush, $listener);
|
||||||
|
$this->_em->getEventManager()->addEventListener(Events::preFlush, $listener);
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$this->assertEquals(1, $listener->preFlush);
|
||||||
|
$this->assertEquals(1, $listener->onFlush);
|
||||||
|
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$this->assertEquals(2, $listener->preFlush);
|
||||||
|
$this->assertEquals(2, $listener->onFlush);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class OnFlushListener
|
class OnFlushListener
|
||||||
@ -91,4 +111,18 @@ class OnFlushListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class OnFlushCalledListener
|
||||||
|
{
|
||||||
|
public $preFlush = 0;
|
||||||
|
public $onFlush = 0;
|
||||||
|
|
||||||
|
public function preFlush($args)
|
||||||
|
{
|
||||||
|
$this->preFlush++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onFlush($args)
|
||||||
|
{
|
||||||
|
$this->onFlush++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user