Beispiel #1
0
 public static function getDoctrineEntityManager($connectionParams = null)
 {
     try {
         if (is_array($connectionParams) === false) {
             include ROOT . 'core/config/adapter/ini.php';
             // get clansuite config
             $clansuite_config = \Koch\Config\Adapter\Ini::readConfig(ROOT_APP . 'configuration/clansuite.php');
             // reduce config array to the dsn/connection settings
             $connectionParams = $clansuite_config['database'];
         }
         // connect
         $config = new \Doctrine\DBAL\Configuration();
         $connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
         $connection->setCharset('UTF8');
         // get Event and Config
         $event = $connection->getEventManager();
         $config = new \Doctrine\ORM\Configuration();
         // add Table Prefix
         $prefix = $connectionParams['prefix'];
         $tablePrefix = new \DoctrineExtensions\TablePrefix\TablePrefix($prefix);
         $event->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $tablePrefix);
         // setup Cache
         $cache = new \Doctrine\Common\Cache\ArrayCache();
         $config->setMetadataCacheImpl($cache);
         // setup Proxy Dir
         $config->setProxyDir(realpath(ROOT . 'application\\doctrine'));
         $config->setProxyNamespace('proxies');
         // setup Annotation Driver
         $driverImpl = $config->newDefaultAnnotationDriver(Helper::getModelPathsForAllModules());
         $config->setMetadataDriverImpl($driverImpl);
         // finally: instantiate EntityManager
         $entityManager = \Doctrine\ORM\EntityManager::create($connection, $config, $event);
         return $entityManager;
     } catch (\Exception $e) {
         $msg = 'The initialization of Doctrine2 failed!' . NL . NL . 'Reason: ' . $e->getMessage();
         throw new Exception($msg);
     }
 }