예제 #1
0
 /**
  * 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());
         }
     }
 }
 /**
  * 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);
 }