3 namespace Doctrine\Tests\ORM\Functional\Ticket;
5 require_once __DIR__ . '/../../../TestInit.php';
7 class DDC199Test extends \Doctrine\Tests\OrmFunctionalTestCase
9 protected function setUp()
12 $this->_schemaTool->createSchema(array(
13 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199ParentClass'),
14 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199ChildClass'),
15 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199RelatedClass')
19 public function testPolymorphicLoading()
21 $child = new DDC199ChildClass;
22 $child->parentData = 'parentData';
23 $child->childData = 'childData';
24 $this->_em->persist($child);
26 $related1 = new DDC199RelatedClass;
27 $related1->relatedData = 'related1';
28 $related1->parent = $child;
29 $this->_em->persist($related1);
31 $related2 = new DDC199RelatedClass;
32 $related2->relatedData = 'related2';
33 $related2->parent = $child;
34 $this->_em->persist($related2);
39 $query = $this->_em->createQuery('select e,r from Doctrine\Tests\ORM\Functional\Ticket\DDC199ParentClass e join e.relatedEntities r');
40 $result = $query->getResult();
42 $this->assertEquals(1, count($result));
43 $this->assertInstanceOf('Doctrine\Tests\ORM\Functional\Ticket\DDC199ParentClass', $result[0]);
44 $this->assertTrue($result[0]->relatedEntities->isInitialized());
45 $this->assertEquals(2, $result[0]->relatedEntities->count());
46 $this->assertInstanceOf('Doctrine\Tests\ORM\Functional\Ticket\DDC199RelatedClass', $result[0]->relatedEntities[0]);
47 $this->assertInstanceOf('Doctrine\Tests\ORM\Functional\Ticket\DDC199RelatedClass', $result[0]->relatedEntities[1]);
53 * @Entity @Table(name="ddc199_entities")
54 * @InheritanceType("SINGLE_TABLE")
55 * @DiscriminatorColumn(name="discr", type="string")
56 * @DiscriminatorMap({"parent" = "DDC199ParentClass", "child" = "DDC199ChildClass"})
58 class DDC199ParentClass
61 * @Id @Column(type="integer")
62 * @GeneratedValue(strategy="AUTO")
67 * @Column(type="string")
72 * @OneToMany(targetEntity="DDC199RelatedClass", mappedBy="parent")
74 public $relatedEntities;
79 class DDC199ChildClass extends DDC199ParentClass
87 /** @Entity @Table(name="ddc199_relatedclass") */
88 class DDC199RelatedClass
90 /** @Id @Column(type="integer") @GeneratedValue */
96 * @ManyToOne(targetEntity="DDC199ParentClass", inversedBy="relatedEntities")
97 * @JoinColumn(name="parent_id", referencedColumnName="id")