Merge branch 'DDC-1300'
This commit is contained in:
commit
1666d59da4
@ -216,13 +216,21 @@ class ObjectHydrator extends AbstractHydrator
|
|||||||
|
|
||||||
private function _getEntityFromIdentityMap($className, array $data)
|
private function _getEntityFromIdentityMap($className, array $data)
|
||||||
{
|
{
|
||||||
|
// TODO: Abstract this code and UnitOfWork::createEntity() equivalent?
|
||||||
$class = $this->_ce[$className];
|
$class = $this->_ce[$className];
|
||||||
|
/* @var $class ClassMetadata */
|
||||||
if ($class->isIdentifierComposite) {
|
if ($class->isIdentifierComposite) {
|
||||||
$idHash = '';
|
$idHash = '';
|
||||||
foreach ($class->identifier as $fieldName) {
|
foreach ($class->identifier as $fieldName) {
|
||||||
|
if (isset($class->associationMappings[$fieldName])) {
|
||||||
|
$idHash .= $data[$class->associationMappings[$fieldName]['joinColumns'][0]['name']] . ' ';
|
||||||
|
} else {
|
||||||
$idHash .= $data[$fieldName] . ' ';
|
$idHash .= $data[$fieldName] . ' ';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return $this->_uow->tryGetByIdHash(rtrim($idHash), $class->rootEntityName);
|
return $this->_uow->tryGetByIdHash(rtrim($idHash), $class->rootEntityName);
|
||||||
|
} else if (isset($class->associationMappings[$class->identifier[0]])) {
|
||||||
|
return $this->_uow->tryGetByIdHash($data[$class->associationMappings[$class->identifier[0]]['joinColumns'][0]['name']], $class->rootEntityName);
|
||||||
} else {
|
} else {
|
||||||
return $this->_uow->tryGetByIdHash($data[$class->identifier[0]], $class->rootEntityName);
|
return $this->_uow->tryGetByIdHash($data[$class->identifier[0]], $class->rootEntityName);
|
||||||
}
|
}
|
||||||
|
108
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1300Test.php
Normal file
108
tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1300Test.php
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../../../TestInit.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group DDC-1300
|
||||||
|
*/
|
||||||
|
class DDC1300Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->_schemaTool->createSchema(array(
|
||||||
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1300Foo'),
|
||||||
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1300FooLocale'),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIssue()
|
||||||
|
{
|
||||||
|
$foo = new DDC1300Foo();
|
||||||
|
$foo->_fooReference = "foo";
|
||||||
|
|
||||||
|
$this->_em->persist($foo);
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$locale = new DDC1300FooLocale();
|
||||||
|
$locale->_foo = $foo;
|
||||||
|
$locale->_locale = "en";
|
||||||
|
$locale->_title = "blub";
|
||||||
|
|
||||||
|
$this->_em->persist($locale);
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$query = $this->_em->createQuery('SELECT f, fl FROM Doctrine\Tests\ORM\Functional\Ticket\DDC1300Foo f JOIN f._fooLocaleRefFoo fl');
|
||||||
|
$result = $query->getResult();
|
||||||
|
|
||||||
|
$this->assertEquals(1, count($result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity
|
||||||
|
*/
|
||||||
|
class DDC1300Foo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var integer fooID
|
||||||
|
* @Column(name="fooID", type="integer", nullable=false)
|
||||||
|
* @GeneratedValue(strategy="AUTO")
|
||||||
|
* @Id
|
||||||
|
*/
|
||||||
|
public $_fooID = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string fooReference
|
||||||
|
* @Column(name="fooReference", type="string", nullable=true, length=45)
|
||||||
|
*/
|
||||||
|
public $_fooReference = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OneToMany(targetEntity="DDC1300FooLocale", mappedBy="_foo",
|
||||||
|
* cascade={"persist"})
|
||||||
|
*/
|
||||||
|
public $_fooLocaleRefFoo = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param array|Zend_Config|null $options
|
||||||
|
* @return Bug_Model_Foo
|
||||||
|
*/
|
||||||
|
public function __construct($options = null)
|
||||||
|
{
|
||||||
|
$this->_fooLocaleRefFoo = new \Doctrine\Common\Collections\ArrayCollection();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Entity
|
||||||
|
*/
|
||||||
|
class DDC1300FooLocale
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ManyToOne(targetEntity="DDC1300Foo")
|
||||||
|
* @JoinColumn(name="fooID", referencedColumnName="fooID")
|
||||||
|
* @Id
|
||||||
|
*/
|
||||||
|
public $_foo = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string locale
|
||||||
|
* @Column(name="locale", type="string", nullable=false, length=5)
|
||||||
|
* @Id
|
||||||
|
*/
|
||||||
|
public $_locale = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string title
|
||||||
|
* @Column(name="title", type="string", nullable=true, length=150)
|
||||||
|
*/
|
||||||
|
public $_title = null;
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user