useModelSet('cms'); parent::setUp(); } public function testOrphanRemoval() { $user = new CmsUser; $user->status = 'dev'; $user->username = 'romanb'; $user->name = 'Roman B.'; $address = new CmsAddress; $address->country = 'de'; $address->zip = 1234; $address->city = 'Berlin'; $user->setAddress($address); $this->_em->persist($user); $this->_em->flush(); $userId = $user->getId(); $this->_em->clear(); $userProxy = $this->_em->getReference('Doctrine\Tests\Models\CMS\CmsUser', $userId); $this->_em->remove($userProxy); $this->_em->flush(); $this->_em->clear(); $query = $this->_em->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u'); $result = $query->getResult(); $this->assertEquals(0, count($result), 'CmsUser should be removed by EntityManager'); $query = $this->_em->createQuery('SELECT a FROM Doctrine\Tests\Models\CMS\CmsAddress a'); $result = $query->getResult(); $this->assertEquals(0, count($result), 'CmsAddress should be removed by orphanRemoval'); } public function testOrphanRemovalWhenUnlink() { $user = new CmsUser; $user->status = 'dev'; $user->username = 'beberlei'; $user->name = 'Bejamin Eberlei'; $email = new CmsEmail; $email->email = 'beberlei@domain.com'; $user->setEmail($email); $this->_em->persist($user); $this->_em->flush(); $userId = $user->getId(); $this->_em->clear(); $user = $this->_em->find('Doctrine\Tests\Models\CMS\CmsUser', $userId); $user->setEmail(null); $this->_em->persist($user); $this->_em->flush(); $this->_em->clear(); $query = $this->_em->createQuery('SELECT e FROM Doctrine\Tests\Models\CMS\CmsEmail e'); $result = $query->getResult(); $this->assertEquals(0, count($result), 'CmsEmail should be removed by orphanRemoval'); } }