12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace Doctrine\Tests\ORM\Functional\Ticket;
- require_once __DIR__ . '/../../../TestInit.php';
- class DDC531Test extends \Doctrine\Tests\OrmFunctionalTestCase
- {
- protected function setUp()
- {
- parent::setUp();
- $this->_schemaTool->createSchema(array(
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC531Item'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC531SubItem'),
- ));
- }
- public function testIssue()
- {
- $item1 = new DDC531Item;
- $item2 = new DDC531Item;
- $item2->parent = $item1;
- $item1->getChildren()->add($item2);
- $this->_em->persist($item1);
- $this->_em->persist($item2);
- $this->_em->flush();
- $this->_em->clear();
- $item3 = $this->_em->find(__NAMESPACE__ . '\DDC531Item', $item2->id); // Load child item first (id 2)
- // parent will already be loaded, cannot be lazy because it has mapped subclasses and we would not
- // know which proxy type to put in.
- $this->assertInstanceOf(__NAMESPACE__ . '\DDC531Item', $item3->parent);
- $this->assertNotInstanceOf('Doctrine\ORM\Proxy\Proxy', $item3->parent);
- $item4 = $this->_em->find(__NAMESPACE__ . '\DDC531Item', $item1->id); // Load parent item (id 1)
- $this->assertNull($item4->parent);
- $this->assertNotNull($item4->getChildren());
- $this->assertTrue($item4->getChildren()->contains($item3)); // lazy-loads children
- }
- }
- /**
- * @Entity
- * @InheritanceType("SINGLE_TABLE")
- * @DiscriminatorColumn(name="type", type="integer")
- * @DiscriminatorMap({"0" = "DDC531Item", "1" = "DDC531SubItem"})
- */
- class DDC531Item
- {
- /**
- * @Id
- * @Column(type="integer")
- * @GeneratedValue(strategy="AUTO")
- */
- public $id;
- /**
- * @OneToMany(targetEntity="DDC531Item", mappedBy="parent")
- */
- protected $children;
- /**
- * @ManyToOne(targetEntity="DDC531Item", inversedBy="children")
- * @JoinColumn(name="parentId", referencedColumnName="id")
- */
- public $parent;
- public function __construct()
- {
- $this->children = new \Doctrine\Common\Collections\ArrayCollection;
- }
- public function getParent()
- {
- return $this->parent;
- }
- public function getChildren()
- {
- return $this->children;
- }
- }
- /**
- * @Entity
- */
- class DDC531SubItem extends DDC531Item
- {
- }
|