Merge branch 'fix/#5689-avoid-object-hash-conflicts-due-to-merge-operations-2.5' into 2.5
Close #5689
This commit is contained in:
commit
b7bfbb6adb
@ -3422,8 +3422,6 @@ class UnitOfWork implements PropertyChangedListener
|
|||||||
);
|
);
|
||||||
$managedCol->setOwner($managedCopy, $assoc2);
|
$managedCol->setOwner($managedCopy, $assoc2);
|
||||||
$prop->setValue($managedCopy, $managedCol);
|
$prop->setValue($managedCopy, $managedCol);
|
||||||
|
|
||||||
$this->originalEntityData[spl_object_hash($entity)][$name] = $managedCol;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($assoc2['isCascadeMerge']) {
|
if ($assoc2['isCascadeMerge']) {
|
||||||
|
@ -12,6 +12,8 @@ use Doctrine\Tests\Mocks\DriverMock;
|
|||||||
use Doctrine\Tests\Mocks\EntityManagerMock;
|
use Doctrine\Tests\Mocks\EntityManagerMock;
|
||||||
use Doctrine\Tests\Mocks\EntityPersisterMock;
|
use Doctrine\Tests\Mocks\EntityPersisterMock;
|
||||||
use Doctrine\Tests\Mocks\UnitOfWorkMock;
|
use Doctrine\Tests\Mocks\UnitOfWorkMock;
|
||||||
|
use Doctrine\Tests\Models\CMS\CmsPhonenumber;
|
||||||
|
use Doctrine\Tests\Models\CMS\CmsUser;
|
||||||
use Doctrine\Tests\Models\Forum\ForumAvatar;
|
use Doctrine\Tests\Models\Forum\ForumAvatar;
|
||||||
use Doctrine\Tests\Models\Forum\ForumUser;
|
use Doctrine\Tests\Models\Forum\ForumUser;
|
||||||
use Doctrine\Tests\Models\GeoNames\City;
|
use Doctrine\Tests\Models\GeoNames\City;
|
||||||
@ -362,6 +364,34 @@ class UnitOfWorkTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
[new ArrayCollection()],
|
[new ArrayCollection()],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group 5689
|
||||||
|
* @group 1465
|
||||||
|
*/
|
||||||
|
public function testObjectHashesOfMergedEntitiesAreNotUsedInOriginalEntityDataMap()
|
||||||
|
{
|
||||||
|
$user = new CmsUser();
|
||||||
|
$user->name = 'ocramius';
|
||||||
|
$mergedUser = $this->_unitOfWork->merge($user);
|
||||||
|
|
||||||
|
self::assertSame([], $this->_unitOfWork->getOriginalEntityData($user), 'No original data was stored');
|
||||||
|
self::assertSame([], $this->_unitOfWork->getOriginalEntityData($mergedUser), 'No original data was stored');
|
||||||
|
|
||||||
|
|
||||||
|
$user = null;
|
||||||
|
$mergedUser = null;
|
||||||
|
|
||||||
|
// force garbage collection of $user (frees the used object hashes, which may be recycled)
|
||||||
|
gc_collect_cycles();
|
||||||
|
|
||||||
|
$newUser = new CmsUser();
|
||||||
|
$newUser->name = 'ocramius';
|
||||||
|
|
||||||
|
$this->_unitOfWork->persist($newUser);
|
||||||
|
|
||||||
|
self::assertSame([], $this->_unitOfWork->getOriginalEntityData($newUser), 'No original data was stored');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user