From 51528fbdeaf36dcec8c05b09066aa1fa40268a9b Mon Sep 17 00:00:00 2001 From: Bart van den Burg Date: Fri, 29 Jun 2012 12:18:37 +0200 Subject: [PATCH] set metadata for interface to be able to fetch entites by interface name --- lib/Doctrine/ORM/Tools/ResolveTargetEntityListener.php | 6 ++++++ .../Tests/ORM/Tools/ResolveTargetEntityListenerTest.php | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ORM/Tools/ResolveTargetEntityListener.php b/lib/Doctrine/ORM/Tools/ResolveTargetEntityListener.php index e193ae2e3..f0d3ce25f 100644 --- a/lib/Doctrine/ORM/Tools/ResolveTargetEntityListener.php +++ b/lib/Doctrine/ORM/Tools/ResolveTargetEntityListener.php @@ -69,6 +69,12 @@ class ResolveTargetEntityListener $this->remapAssociation($cm, $mapping); } } + + foreach ($this->resolveTargetEntities as $interface => $data) { + if ($data['targetEntity'] == $cm->getName()) { + $args->getEntityManager()->getMetadataFactory()->setMetadataFor($interface, $cm); + } + } } /** diff --git a/tests/Doctrine/Tests/ORM/Tools/ResolveTargetEntityListenerTest.php b/tests/Doctrine/Tests/ORM/Tools/ResolveTargetEntityListenerTest.php index 3b4219623..fb0e301e0 100644 --- a/tests/Doctrine/Tests/ORM/Tools/ResolveTargetEntityListenerTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/ResolveTargetEntityListenerTest.php @@ -29,8 +29,7 @@ class ResolveTargetEntityListenerTest extends \Doctrine\Tests\OrmTestCase $this->em = $this->_getTestEntityManager(); $this->em->getConfiguration()->setMetadataDriverImpl($annotationDriver); - $this->factory = new ClassMetadataFactory; - $this->factory->setEntityManager($this->em); + $this->factory = $this->em->getMetadataFactory(); $this->listener = new ResolveTargetEntityListener; } @@ -57,6 +56,8 @@ class ResolveTargetEntityListenerTest extends \Doctrine\Tests\OrmTestCase $this->assertSame('Doctrine\Tests\ORM\Tools\ResolveTargetEntity', $meta['manyToOne']['targetEntity']); $this->assertSame('Doctrine\Tests\ORM\Tools\ResolveTargetEntity', $meta['oneToMany']['targetEntity']); $this->assertSame('Doctrine\Tests\ORM\Tools\TargetEntity', $meta['oneToOne']['targetEntity']); + + $this->assertSame($cm, $this->factory->getMetadataFor('Doctrine\Tests\ORM\Tools\ResolveTargetInterface')); } /**