68 lines
1.4 KiB
PHP
68 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
|
|
|
/**
|
|
* @group DDC-1526
|
|
*/
|
|
class DDC1526Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
{
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
$this->_schemaTool->createSchema(array(
|
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1526Menu'),
|
|
));
|
|
}
|
|
|
|
public function testIssue()
|
|
{
|
|
$parents = array();
|
|
for ($i = 0; $i < 9; $i++) {
|
|
$entity = new DDC1526Menu;
|
|
|
|
if (isset ($parents[($i % 3)])) {
|
|
$entity->parent = $parents[($i%3)];
|
|
}
|
|
|
|
$this->_em->persist($entity);
|
|
$parents[$i] = $entity;
|
|
}
|
|
$this->_em->flush();
|
|
$this->_em->clear();
|
|
|
|
|
|
$dql = "SELECT m, c
|
|
FROM " . __NAMESPACE__ . "\DDC1526Menu m
|
|
LEFT JOIN m.children c";
|
|
$menus = $this->_em->createQuery($dql)->getResult();
|
|
|
|
// All Children collection now have to be initiailzed
|
|
foreach ($menus as $menu) {
|
|
$this->assertTrue($menu->children->isInitialized());
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Entity
|
|
*/
|
|
class DDC1526Menu
|
|
{
|
|
/**
|
|
* @Column(type="integer")
|
|
* @Id
|
|
* @GeneratedValue
|
|
*/
|
|
public $id;
|
|
/**
|
|
* @ManyToOne(targetEntity="DDC1526Menu", inversedBy="children")
|
|
*/
|
|
public $parent;
|
|
|
|
/**
|
|
* @OneToMany(targetEntity="DDC1526Menu", mappedBy="parent")
|
|
*/
|
|
public $children;
|
|
}
|