Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC512Test.php
1 <?php
2 namespace Doctrine\Tests\ORM\Functional\Ticket;
3
4 require_once __DIR__ . '/../../../TestInit.php';
5
6 class DDC512Test extends \Doctrine\Tests\OrmFunctionalTestCase
7 {
8     protected function setUp()
9     {
10         parent::setUp();
11         $this->_schemaTool->createSchema(array(
12             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC512Customer'),
13             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC512OfferItem'),
14             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC512Item'),
15         ));
16     }
17
18     public function testIssue()
19     {
20         $customer1 = new DDC512Customer();
21         $item = new DDC512OfferItem();
22         $customer1->item = $item;
23         $this->_em->persist($customer1);
24
25         $customer2 = new DDC512Customer();
26         $this->_em->persist($customer2);
27
28         $this->_em->flush();
29         $this->_em->clear();
30
31         $q = $this->_em->createQuery("select u,i from ".__NAMESPACE__."\\DDC512Customer u left join u.item i");
32         $result = $q->getResult();
33
34         $this->assertEquals(2, count($result));
35         $this->assertInstanceOf(__NAMESPACE__ . '\DDC512Customer', $result[0]);
36         $this->assertInstanceOf(__NAMESPACE__ . '\DDC512Customer', $result[1]);
37         if ($result[0]->id == $customer1->id) {
38             $this->assertInstanceOf(__NAMESPACE__ . '\DDC512OfferItem', $result[0]->item);
39             $this->assertEquals($item->id, $result[0]->item->id);
40             $this->assertNull($result[1]->item);
41         } else {
42             $this->assertInstanceOf(__NAMESPACE__ . '\DDC512OfferItem', $result[1]->item);
43             $this->assertNull($result[0]->item);
44         }
45     }
46 }
47
48 /**
49  * @Entity
50  */
51 class DDC512Customer {
52     /**
53      * @Id
54      * @Column(type="integer")
55      * @GeneratedValue(strategy="AUTO")
56      */
57     public $id;
58
59     /**
60      * NOTE that we can currently not name the join column the same as the field
61      * (item = item), this currently confuses Doctrine.
62      *
63      * @OneToOne(targetEntity="DDC512OfferItem", cascade={"remove","persist"})
64      * @JoinColumn(name="item_id", referencedColumnName="id")
65      */
66     public $item;
67 }
68
69 /**
70  * @Entity
71   */
72 class DDC512OfferItem extends DDC512Item
73 {
74 }
75
76 /**
77  * @Entity
78  * @InheritanceType("JOINED")
79  * @DiscriminatorColumn(name="discr", type="string")
80  * @DiscriminatorMap({"item" = "DDC512Item", "offerItem" = "DDC512OfferItem"})
81  */
82 class DDC512Item
83 {
84     /**
85      * @Id
86      * @Column(type="integer")
87      * @GeneratedValue(strategy="AUTO")
88      */
89     public $id;
90 }
91
92
93
94