3 namespace Doctrine\Tests\ORM\Functional\Ticket;
5 use Doctrine\Common\Collections\ArrayCollection;
6 use Doctrine\Tests\Models\CMS\CmsUser;
7 use Doctrine\Tests\Models\CMS\CmsGroup;
9 require_once __DIR__ . '/../../../TestInit.php';
11 class DDC767Test extends \Doctrine\Tests\OrmFunctionalTestCase
13 protected function setUp()
15 $this->useModelSet('cms');
22 public function testCollectionChangesInsideTransaction()
24 $user = new CmsUser();
25 $user->name = "beberlei";
26 $user->status = "active";
27 $user->username = "beberlei";
29 $group1 = new CmsGroup();
30 $group1->name = "foo";
32 $group2 = new CmsGroup();
33 $group2->name = "bar";
35 $group3 = new CmsGroup();
36 $group3->name = "baz";
38 $user->addGroup($group1);
39 $user->addGroup($group2);
41 $this->_em->persist($user);
42 $this->_em->persist($group1);
43 $this->_em->persist($group2);
44 $this->_em->persist($group3);
49 /* @var $pUser CmsUser */
50 $pUser = $this->_em->find(get_class($user), $user->id);
52 $this->assertNotNull($pUser, "User not retrieved from database.");
54 $groups = array(2, 3);
57 $this->_em->beginTransaction();
59 $pUser->groups->clear();
64 foreach ($groups as $groupId) {
65 $pUser->addGroup($this->_em->find(get_class($group1), $groupId));
70 } catch(\Exception $e) {
71 $this->_em->rollback();