Commit 080f7373 authored by Roman S. Borschel's avatar Roman S. Borschel

[DDC-534] Fixed.

parent 39a6c019
...@@ -485,7 +485,7 @@ class UnitOfWork implements PropertyChangedListener ...@@ -485,7 +485,7 @@ class UnitOfWork implements PropertyChangedListener
} }
} }
} }
// Look for changes in associations of the entity // Look for changes in associations of the entity
foreach ($class->associationMappings as $assoc) { foreach ($class->associationMappings as $assoc) {
$val = $class->reflFields[$assoc->sourceFieldName]->getValue($entity); $val = $class->reflFields[$assoc->sourceFieldName]->getValue($entity);
...@@ -2042,9 +2042,15 @@ class UnitOfWork implements PropertyChangedListener ...@@ -2042,9 +2042,15 @@ class UnitOfWork implements PropertyChangedListener
$oid = spl_object_hash($entity); $oid = spl_object_hash($entity);
$class = $this->_em->getClassMetadata(get_class($entity)); $class = $this->_em->getClassMetadata(get_class($entity));
$isAssocField = isset($class->associationMappings[$propertyName]);
if ( ! $isAssocField && ! isset($class->fieldMappings[$propertyName])) {
return; // ignore non-persistent fields
}
$this->_entityChangeSets[$oid][$propertyName] = array($oldValue, $newValue); $this->_entityChangeSets[$oid][$propertyName] = array($oldValue, $newValue);
if (isset($class->associationMappings[$propertyName])) { if ($isAssocField) {
$assoc = $class->associationMappings[$propertyName]; $assoc = $class->associationMappings[$propertyName];
if ($assoc->isOneToOne() && $assoc->isOwningSide) { if ($assoc->isOneToOne() && $assoc->isOwningSide) {
$this->_entityUpdates[$oid] = $entity; $this->_entityUpdates[$oid] = $entity;
......
...@@ -140,6 +140,7 @@ class UnitOfWorkTest extends \Doctrine\Tests\OrmTestCase ...@@ -140,6 +140,7 @@ class UnitOfWorkTest extends \Doctrine\Tests\OrmTestCase
$this->assertTrue($this->_unitOfWork->isInIdentityMap($entity)); $this->assertTrue($this->_unitOfWork->isInIdentityMap($entity));
$entity->setData('newdata'); $entity->setData('newdata');
$entity->setTransient('newtransientvalue');
$this->assertTrue($this->_unitOfWork->isScheduledForUpdate($entity)); $this->assertTrue($this->_unitOfWork->isScheduledForUpdate($entity));
...@@ -206,10 +207,19 @@ class NotifyChangedEntity implements \Doctrine\Common\NotifyPropertyChanged ...@@ -206,10 +207,19 @@ class NotifyChangedEntity implements \Doctrine\Common\NotifyPropertyChanged
*/ */
private $data; private $data;
private $transient; // not persisted
public function getId() { public function getId() {
return $this->id; return $this->id;
} }
public function setTransient($value) {
if ($value != $this->transient) {
$this->_onPropertyChanged('transient', $this->transient, $value);
$this->transient = $value;
}
}
public function getData() { public function getData() {
return $this->data; return $this->data;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment