浏览代码

[DoctrineBundle] added Registry::getEntityManagers()

Fabien Potencier 14 年之前
父节点
当前提交
1c3fa20685

+ 1 - 2
src/Symfony/Bundle/DoctrineBundle/CacheWarmer/ProxyCacheWarmer.php

@@ -64,8 +64,7 @@ class ProxyCacheWarmer implements CacheWarmerInterface
             return;
         }
 
-        foreach ($this->container->get('doctrine')->getEntityManagerNames() as $id) {
-            $em = $this->container->get($id);
+        foreach ($this->container->get('doctrine')->getEntityManagers() as $em) {
             $classes = $em->getMetadataFactory()->getAllMetadata();
             $em->getProxyFactory()->generateProxyClasses($classes);
         }

+ 2 - 2
src/Symfony/Bundle/DoctrineBundle/Mapping/MetadataFactory.php

@@ -156,9 +156,9 @@ class MetadataFactory
     private function getAllMetadata()
     {
         $metadata = array();
-        foreach ($this->registry->getEntityManagerNames() as $name => $id) {
+        foreach ($this->registry->getEntityManagers() as $em) {
             $cmf = new DisconnectedClassMetadataFactory();
-            $cmf->setEntityManager($this->registry->getEntityManager($name));
+            $cmf->setEntityManager($em);
             foreach ($cmf->getAllMetadata() as $m) {
                 $metadata[] = $m;
             }

+ 15 - 0
src/Symfony/Bundle/DoctrineBundle/Registry.php

@@ -123,6 +123,21 @@ class Registry
         return $this->container->get($this->entityManagers[$name]);
     }
 
+    /**
+     * Gets an array of all registered entity managers
+     *
+     * @return array An array of EntityManager instances
+     */
+    public function getEntityManagers()
+    {
+        $ems = array();
+        foreach ($this->entityManagers as $name => $id) {
+            $ems[$name] = $this->container->get($id);
+        }
+
+        return $ems;
+    }
+
     /**
      * Resets a named entity manager.
      *