Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC211Test.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Functional\Ticket;
4
5 require_once __DIR__ . '/../../../TestInit.php';
6
7 class DDC211Test extends \Doctrine\Tests\OrmFunctionalTestCase
8 {
9     protected function setUp()
10     {
11         parent::setUp();
12         $this->_schemaTool->createSchema(array(
13             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC211User'),
14             $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC211Group')
15         ));
16     }
17
18     public function testIssue()
19     {
20         //$this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger);
21
22         $user = new DDC211User;
23         $user->setName('John Doe');
24
25         $this->_em->persist($user);
26         $this->_em->flush();
27
28         $groupNames = array('group 1', 'group 2', 'group 3', 'group 4');
29         foreach ($groupNames as $name) {
30
31             $group = new DDC211Group;
32             $group->setName($name);
33             $this->_em->persist($group);
34             $this->_em->flush();
35
36             if (!$user->getGroups()->contains($group)) {
37                 $user->getGroups()->add($group);
38                 $group->getUsers()->add($user);
39                 $this->_em->flush();
40             }
41         }
42
43         $this->assertEquals(4, $user->getGroups()->count());
44
45     }
46 }
47
48
49 /**
50  * @Entity
51  * @Table(name="ddc211_users")
52 */
53 class DDC211User
54 {
55     /**
56      * @Id
57      * @Column(name="id", type="integer")
58      * @GeneratedValue(strategy="AUTO")
59      */
60     protected $id;
61
62     /**
63      * @Column(name="name", type="string")
64      */
65     protected $name;
66
67     /**
68     * @ManyToMany(targetEntity="DDC211Group", inversedBy="users")
69     *   @JoinTable(name="user_groups",
70     *       joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
71     *       inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}
72     *   )
73     */
74     protected $groups;
75
76     public function __construct() {
77         $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
78     }
79
80     public function setName($name) { $this->name = $name; }
81
82     public function getGroups() { return $this->groups; }
83 }
84
85 /**
86  * @Entity
87  * @Table(name="ddc211_groups")
88  */
89 class DDC211Group
90 {
91     /**
92      * @Id
93      * @Column(name="id", type="integer")
94      * @GeneratedValue(strategy="AUTO")
95      */
96     protected $id;
97
98     /**
99      * @Column(name="name", type="string")
100      */
101     protected $name;
102
103     /**
104     * @ManyToMany(targetEntity="DDC211User", mappedBy="groups")
105     */
106     protected $users;
107
108     public function __construct() {
109         $this->users = new \Doctrine\Common\Collections\ArrayCollection();
110     }
111
112     public function setName($name) { $this->name = $name; }
113
114     public function getUsers() { return $this->users; }
115 }
116