Beispiel #1
0
 /**
  * Performs the actual find.
  * 
  * @param ezcQuerySelect|ezcPersistentFindQuery $query 
  * @param string $class 
  * @return array(object($class))
  */
 private function performFind($query, $class = null)
 {
     $objects = $this->session->find($query, $class);
     $defs = array();
     foreach ($objects as $i => $object) {
         $class = get_class($object);
         if (!isset($defs[$class])) {
             $defs[$class] = $this->session->definitionManager->fetchDefinition($class);
         }
         $state = $object->getState();
         $id = $state[$defs[$class]->idProperty->propertyName];
         $identity = null;
         if (!$this->properties['options']->refetch) {
             $identity = $this->properties['identityMap']->getIdentity($class, $id);
         }
         if ($identity !== null) {
             $objects[$i] = $identity;
         } else {
             $this->properties['identityMap']->setIdentity($object);
         }
     }
     return $objects;
 }