Details
Description
I use @version field and after first save it thinks that versionField was changed.
$Entity = $em->find(...); $Entity->changeField(); $em->persist($Entity); $em->flush(); $em->getUnitOfWork()->computeChangeSets(); var_dump($em->getUnitOfWork()->getEntityChangeSet($Entity);
array(1) {
["version"]=>
array(2) {
[0]=>
int(183)
[1]=>
int(184)
}
}
I fixed it in method computeChangeSet on lines around 473:
Index: ../vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php
===================================================================
@@ -448,6 +448,9 @@
$changeSet = $isChangeTrackingNotify ? $this->entityChangeSets[$oid] : array();
foreach ($actualData as $propName => $actualValue) {
+ if ($class->isVersioned && $propName == $class->versionField) {
+ continue;
+ }
$orgValue = isset($originalData[$propName]) ? $originalData[$propName] : null;
if (isset($class->associationMappings[$propName])) {
$assoc = $class->associationMappings[$propName];
The fix is bad. There is a much better way, but i can confirm this issue exists.