1
0
mirror of synced 2025-02-21 14:43:14 +03:00

Micro optimization in computeChangeSet when using readOnly entities.

This commit is contained in:
Guilherme Blanco 2011-10-30 15:46:07 -02:00
parent 67497ed834
commit 3cfa479c01

View File

@ -471,19 +471,21 @@ class UnitOfWork implements PropertyChangedListener
*/ */
public function computeChangeSet(ClassMetadata $class, $entity) public function computeChangeSet(ClassMetadata $class, $entity)
{ {
if ( ! $class->isInheritanceTypeNone()) {
$class = $this->em->getClassMetadata(get_class($entity));
}
$oid = spl_object_hash($entity); $oid = spl_object_hash($entity);
if (isset($this->readOnlyObjects[$oid])) { if (isset($this->readOnlyObjects[$oid])) {
return; return;
} }
if ( ! $class->isInheritanceTypeNone()) {
$class = $this->em->getClassMetadata(get_class($entity));
}
$actualData = array(); $actualData = array();
foreach ($class->reflFields as $name => $refProp) { foreach ($class->reflFields as $name => $refProp) {
$value = $refProp->getValue($entity); $value = $refProp->getValue($entity);
if (isset($class->associationMappings[$name]) if (isset($class->associationMappings[$name])
&& ($class->associationMappings[$name]['type'] & ClassMetadata::TO_MANY) && ($class->associationMappings[$name]['type'] & ClassMetadata::TO_MANY)
&& $value !== null && $value !== null