Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC199Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5 require_once __DIR__ . '/../../../TestInit.php';
6
7 class DDC199Test extends \Doctrine\Tests\OrmFunctionalTestCase
8 {
9     protected function setUp()
10     {
11         parent::setUp();
12         $this->_schemaTool->createSchema(array(
13             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199ParentClass'),
14             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199ChildClass'),
15             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC199RelatedClass')
16         ));
17     }
18
19     public function testPolymorphicLoading()
20     {
21         $child = new DDC199ChildClass;
22         $child->parentData = 'parentData';
23         $child->childData = 'childData';
24         $this->_em->persist($child);
25
26         $related1 = new DDC199RelatedClass;
27         $related1->relatedData = 'related1';
28         $related1->parent = $child;
29         $this->_em->persist($related1);
30
31         $related2 = new DDC199RelatedClass;
32         $related2->relatedData = 'related2';
33         $related2->parent = $child;
34         $this->_em->persist($related2);
35
36         $this->_em->flush();
37         $this->_em->clear();
38
39         $query = $this->_em->createQuery('select e,r from Doctrine\Tests\ORM\Functional\Ticket\DDC199ParentClass e join e.relatedEntities r');
40         $result = $query->getResult();
41
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]);
48     }
49 }
50
51
52 /**
53  * @Entity @Table(name="ddc199_entities")
54  * @InheritanceType("SINGLE_TABLE")
55  * @DiscriminatorColumn(name="discr", type="string")
56  * @DiscriminatorMap({"parent" = "DDC199ParentClass", "child" = "DDC199ChildClass"})
57  */
58 class DDC199ParentClass
59 {
60     /**
61      * @Id @Column(type="integer")
62      * @GeneratedValue(strategy="AUTO")
63      */
64     public $id;
65
66     /**
67      * @Column(type="string")
68      */
69     public $parentData;
70
71     /**
72      * @OneToMany(targetEntity="DDC199RelatedClass", mappedBy="parent")
73      */
74     public $relatedEntities;
75 }
76
77
78 /** @Entity */
79 class DDC199ChildClass extends DDC199ParentClass
80 {
81     /**
82      * @Column
83      */
84     public $childData;
85 }
86
87 /** @Entity @Table(name="ddc199_relatedclass") */
88 class DDC199RelatedClass
89 {
90     /** @Id @Column(type="integer") @GeneratedValue */
91     public $id;
92     /** @Column */
93     public $relatedData;
94
95     /**
96      * @ManyToOne(targetEntity="DDC199ParentClass", inversedBy="relatedEntities")
97      * @JoinColumn(name="parent_id", referencedColumnName="id")
98      */
99     public $parent;
100 }