From 7c7106b1c14e267bf5f24a47f90c0587ea190a8f Mon Sep 17 00:00:00 2001 From: Benjamin Eberlei Date: Sat, 12 Mar 2011 19:11:37 +0100 Subject: [PATCH] DDC-952 - Fix bug in inverse one-to-one eager loading sql code. --- .../ORM/Persisters/BasicEntityPersister.php | 2 +- .../Functional/OneToOneEagerLoadingTest.php | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php b/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php index 125f73bb8..aed43d245 100644 --- a/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php +++ b/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php @@ -1031,7 +1031,7 @@ class BasicEntityPersister foreach ($owningAssoc['sourceToTargetKeyColumns'] AS $sourceCol => $targetCol) { $this->_selectJoinSql .= $this->_getSQLTableAlias($owningAssoc['sourceEntity'], $assocAlias) . '.'.$sourceCol.' = ' . - $this->_getSQLTableAlias($assoc['targetEntity']) . '.' . $targetCol . ' '; + $this->_getSQLTableAlias($owningAssoc['targetEntity']) . '.' . $targetCol . ' '; } } } diff --git a/tests/Doctrine/Tests/ORM/Functional/OneToOneEagerLoadingTest.php b/tests/Doctrine/Tests/ORM/Functional/OneToOneEagerLoadingTest.php index 6378cd24f..044a17381 100644 --- a/tests/Doctrine/Tests/ORM/Functional/OneToOneEagerLoadingTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/OneToOneEagerLoadingTest.php @@ -84,7 +84,7 @@ class OneToOneEagerLoadingTest extends \Doctrine\Tests\OrmFunctionalTestCase public function testEagerLoadOneToOneNullInverseSide() { - $driver = new TrainDriver("Benjamin"); + $driver = new TrainDriver("Dagny Taggert"); $this->_em->persist($driver); $this->_em->flush(); @@ -95,12 +95,26 @@ class OneToOneEagerLoadingTest extends \Doctrine\Tests\OrmFunctionalTestCase $sqlCount = count($this->_sqlLoggerStack->queries); $driver = $this->_em->find(get_class($driver), $driver->id); - var_dump($this->_sqlLoggerStack->queries); // wrong table aliasing! $this->assertNotInstanceOf('Doctrine\ORM\Proxy\Proxy', $driver->train); $this->assertNull($driver->train); $this->assertEquals($sqlCount + 1, count($this->_sqlLoggerStack->queries)); } + + public function testEagerLoadManyToOne() + { + $train = new Train(); + $waggon = new Waggon(); + $train->addWaggon($waggon); + + $this->_em->persist($train); // cascades + $this->_em->flush(); + $this->_em->clear(); + + $waggon = $this->_em->find(get_class($waggon), $waggon->id); + $this->assertNotInstanceOf('Doctrine\ORM\Proxy\Proxy', $waggon->train); + $this->assertNotNull($waggon->train); + } } /** @@ -174,7 +188,7 @@ class Waggon { /** @id @generatedValue @column(type="integer") */ public $id; - /** @ManyToOne(targetEntity="Train", inversedBy="waggons") */ + /** @ManyToOne(targetEntity="Train", inversedBy="waggons", fetch="EAGER") */ public $train; public function setTrain($train)