/** * Create a new entity manager */ public function createEntityManager() { if (!isset($this->configuration['connections'][$this->getEnvironment()])) { throw new LogicException('Missing configuration for specified environment'); } $databaseParams = $this->configuration['connections'][$this->getEnvironment()]; $entitiesPaths = []; $aliases = []; foreach ($this->application->getMetadata() as $appName => $metadata) { /* @var $metadata \PhpCollection\Map */ if ($metadata->containsKey('doctrine-entities')) { $entitiesPaths[] = realpath($metadata->get('application_path')->get() . DIRECTORY_SEPARATOR . $metadata->get('doctrine-entities')->get()); if ($metadata->containsKey('doctrine-alias-namespace')) { $aliases[$appName] = $metadata->get('doctrine-alias-namespace')->get(); } } } $doctrineConfig = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $this->getEnvironment() == 'development'); $this->setCacheDrivers($doctrineConfig); $this->setFilters($doctrineConfig); foreach ($aliases as $alias => $namespace) { $doctrineConfig->addEntityNamespace($alias, $namespace); } return EntityManager::create($databaseParams, $doctrineConfig); }
/** * Attach application to current instance * * @param AbstractApplication $application * * @return mixed */ public function setApplication(AbstractApplication $application) { foreach ($application->getMetadata() as $applicationName => $metadata) { /* @var $metadata Map */ if ($metadata->containsKey('views')) { $this->addMapping($applicationName, $metadata->get('application_path')->get() . DIRECTORY_SEPARATOR . $metadata->get('views')->get()); } } }