function it_clears_the_import_cache(DoctrineCache $doctrineCache, EntityManager $entityManager, UnitOfWork $uow) { $this->setNonClearableEntities(['NonClearable']); $uow->getIdentityMap()->willReturn(['NonClearable' => [], 'Clearable' => []]); $entityManager->clear('Clearable')->shouldBeCalled(); $doctrineCache->clear(['NonClearable'])->shouldBeCalled(); $this->clear(); }
protected function hydrateRowData(array $row, array &$cache, array &$result) { parent::hydrateRowData($row, $cache, $result); $identityMap = $this->uow->getIdentityMap(); foreach ($this->aliasInvokers as $dqlAlias => $invokers) { $class = $this->aliasMetadata[$dqlAlias]; $id = array(); foreach ($class->identifier as $idProperty) { if (!isset($this->lastRowData[$dqlAlias][$idProperty])) { if (!isset($class->associationMappings[$idProperty])) { continue 2; } elseif (!isset($this->lastRowData[$dqlAlias][$idProperty = $class->getSingleAssociationJoinColumnName($idProperty)])) { continue 2; } } $id[$idProperty] = $this->lastRowData[$dqlAlias][$idProperty]; } if (!isset($identityMap[$class->rootEntityName][$idHash = implode(' ', (array) $id)])) { continue; } $entity = $identityMap[$class->rootEntityName][$idHash]; $this->lifecycleEventsInvoker->invoke($class, Events::postLoadRelations, $entity, new LifecycleEventArgs($entity, $this->_em), $invokers); } }