diff --git a/lib/Doctrine/Persistence/AbstractManagerRegistry.php b/lib/Doctrine/Persistence/AbstractManagerRegistry.php index 63ff9b02..af269aff 100644 --- a/lib/Doctrine/Persistence/AbstractManagerRegistry.php +++ b/lib/Doctrine/Persistence/AbstractManagerRegistry.php @@ -2,6 +2,7 @@ namespace Doctrine\Persistence; +use Doctrine\Persistence\Mapping\MappingException; use InvalidArgumentException; use ReflectionClass; @@ -176,12 +177,23 @@ public function getManagerForClass($class) $class = $parentClass->getName(); } + $isInterface = $proxyClass->isInterface(); + foreach ($this->managers as $id) { $manager = $this->getService($id); - if (! $manager->getMetadataFactory()->isTransient($class)) { + if (! $isInterface && ! $manager->getMetadataFactory()->isTransient($class)) { return $manager; } + + if ($isInterface) { + try { + $manager->getClassMetadata($class); + + return $manager; + } catch (MappingException $expected) { + } + } } return null;