3 namespace Doctrine\Tests\ORM\Functional;
5 use Doctrine\Tests\Models\CMS\CmsUser,
6 Doctrine\Tests\Models\CMS\CmsAddress,
7 Doctrine\Tests\Models\CMS\CmsPhonenumber;
9 require_once __DIR__ . '/../../TestInit.php';
12 * Tests a bidirectional one-to-many association mapping with orphan removal.
14 class OneToManyOrphanRemovalTest extends \Doctrine\Tests\OrmFunctionalTestCase
18 protected function setUp()
20 $this->useModelSet('cms');
25 $user->status = 'dev';
26 $user->username = 'romanb';
27 $user->name = 'Roman B.';
29 $phone = new CmsPhonenumber;
30 $phone->phonenumber = '123456';
32 $user->addPhonenumber($phone);
34 $this->_em->persist($user);
37 $this->userId = $user->getId();
41 public function testOrphanRemoval()
43 $userProxy = $this->_em->getReference('Doctrine\Tests\Models\CMS\CmsUser', $this->userId);
45 $this->_em->remove($userProxy);
49 $query = $this->_em->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u');
50 $result = $query->getResult();
52 $this->assertEquals(0, count($result), 'CmsUser should be removed by EntityManager');
54 $query = $this->_em->createQuery('SELECT p FROM Doctrine\Tests\Models\CMS\CmsPhonenumber p');
55 $result = $query->getResult();
57 $this->assertEquals(0, count($result), 'CmsPhonenumber should be removed by orphanRemoval');
63 public function testOrphanRemovalUnitializedCollection()
65 $user = $this->_em->find('Doctrine\Tests\Models\CMS\CmsUser', $this->userId);
67 $user->phonenumbers->clear();
70 $query = $this->_em->createQuery('SELECT p FROM Doctrine\Tests\Models\CMS\CmsPhonenumber p');
71 $result = $query->getResult();
73 $this->assertEquals(0, count($result), 'CmsPhonenumber should be removed by orphanRemoval');