diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index fbbab7b6a..bc8d09fb8 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3442,6 +3442,10 @@ class UnitOfWork implements PropertyChangedListener */ private function clearIdentityMapForEntityName($entityName) { + if (is_object($entityName)) { + return; + } + if (! isset($this->identityMap[$entityName])) { return; } diff --git a/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php b/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php index 0ff2572b9..84df1073d 100644 --- a/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php +++ b/tests/Doctrine/Tests/ORM/UnitOfWorkTest.php @@ -349,6 +349,20 @@ class UnitOfWorkTest extends OrmTestCase $this->assertFalse($this->_unitOfWork->isScheduledForInsert($entity2)); } + public function testClearManagerWithObject() + { + $entity = new Country(456, 'United Kingdom'); + + $this->_unitOfWork->persist($entity); + $this->assertTrue($this->_unitOfWork->isInIdentityMap($entity)); + + $this->_unitOfWork->clear($entity); + + // true because entity wasn't a string so it wasn't cleared + $this->assertTrue($this->_unitOfWork->isInIdentityMap($entity)); + $this->assertTrue($this->_unitOfWork->isScheduledForInsert($entity)); + } + /** * Data Provider *