1
0
mirror of synced 2025-02-20 06:03:15 +03:00

DDC-952 - Fix bug in inverse one-to-one eager loading sql code.

This commit is contained in:
Benjamin Eberlei 2011-03-12 19:11:37 +01:00
parent 4677883acd
commit 7c7106b1c1
2 changed files with 18 additions and 4 deletions

View File

@ -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 . ' ';
}
}
}

View File

@ -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)