1
0
mirror of synced 2025-01-22 08:11:40 +03:00

[DDC-386][DDC-675] Fixed.

This commit is contained in:
Roman S. Borschel 2010-08-08 15:01:03 +02:00
parent dcebc241b4
commit 0424d87099
4 changed files with 21 additions and 10 deletions

View File

@ -25,6 +25,7 @@ use Closure, Exception,
Doctrine\DBAL\LockMode, Doctrine\DBAL\LockMode,
Doctrine\ORM\Mapping\ClassMetadata, Doctrine\ORM\Mapping\ClassMetadata,
Doctrine\ORM\Mapping\ClassMetadataFactory, Doctrine\ORM\Mapping\ClassMetadataFactory,
Doctrine\ORM\Query\ResultSetMapping,
Doctrine\ORM\Proxy\ProxyFactory; Doctrine\ORM\Proxy\ProxyFactory;
/** /**
@ -225,7 +226,14 @@ class EntityManager
} }
/** /**
* Returns the metadata for a class. * Returns the ORM metadata descriptor for a class.
*
* The class name must be the fully-qualified class name without a leading backslash
* (as it is returned by get_class($obj)) or an aliased class name.
*
* Examples:
* MyProject\Domain\User
* sales:PriceRequest
* *
* @return Doctrine\ORM\Mapping\ClassMetadata * @return Doctrine\ORM\Mapping\ClassMetadata
* @internal Performance-sensitive method. * @internal Performance-sensitive method.
@ -268,7 +276,7 @@ class EntityManager
* @param ResultSetMapping $rsm The ResultSetMapping to use. * @param ResultSetMapping $rsm The ResultSetMapping to use.
* @return NativeQuery * @return NativeQuery
*/ */
public function createNativeQuery($sql, \Doctrine\ORM\Query\ResultSetMapping $rsm) public function createNativeQuery($sql, ResultSetMapping $rsm)
{ {
$query = new NativeQuery($this); $query = new NativeQuery($this);
$query->setSql($sql); $query->setSql($sql);
@ -338,7 +346,7 @@ class EntityManager
*/ */
public function getReference($entityName, $identifier) public function getReference($entityName, $identifier)
{ {
$class = $this->metadataFactory->getMetadataFor($entityName); $class = $this->metadataFactory->getMetadataFor(ltrim($entityName, '\\'));
// Check identity map first, if its already in there just return it. // Check identity map first, if its already in there just return it.
if ($entity = $this->unitOfWork->tryGetById($identifier, $class->rootEntityName)) { if ($entity = $this->unitOfWork->tryGetById($identifier, $class->rootEntityName)) {
@ -374,7 +382,7 @@ class EntityManager
*/ */
public function getPartialReference($entityName, $identifier) public function getPartialReference($entityName, $identifier)
{ {
$class = $this->metadataFactory->getMetadataFor($entityName); $class = $this->metadataFactory->getMetadataFor(ltrim($entityName, '\\'));
// Check identity map first, if its already in there just return it. // Check identity map first, if its already in there just return it.
if ($entity = $this->unitOfWork->tryGetById($identifier, $class->rootEntityName)) { if ($entity = $this->unitOfWork->tryGetById($identifier, $class->rootEntityName)) {
@ -534,11 +542,12 @@ class EntityManager
/** /**
* Gets the repository for an entity class. * Gets the repository for an entity class.
* *
* @param string $entityName The name of the Entity. * @param string $entityName The name of the entity.
* @return EntityRepository The repository. * @return EntityRepository The repository class.
*/ */
public function getRepository($entityName) public function getRepository($entityName)
{ {
$entityName = ltrim($entityName, '\\');
if (isset($this->repositories[$entityName])) { if (isset($this->repositories[$entityName])) {
return $this->repositories[$entityName]; return $this->repositories[$entityName];
} }

View File

@ -119,7 +119,7 @@ class Lexer extends \Doctrine\Common\Lexer
protected function getCatchablePatterns() protected function getCatchablePatterns()
{ {
return array( return array(
'[a-z_][a-z0-9_\:\\\]*[a-z0-9_]{1}', '[a-z_\\\][a-z0-9_\:\\\]*[a-z0-9_]{1}',
'(?:[0-9]+(?:[\.][0-9]+)*)(?:e[+-]?[0-9]+)?', '(?:[0-9]+(?:[\.][0-9]+)*)(?:e[+-]?[0-9]+)?',
"'(?:[^']|'')*'", "'(?:[^']|'')*'",
'\?[1-9][0-9]*|:[a-z][a-z0-9_]+' '\?[1-9][0-9]*|:[a-z][a-z0-9_]+'

View File

@ -765,7 +765,7 @@ class Parser
{ {
$this->match(Lexer::T_IDENTIFIER); $this->match(Lexer::T_IDENTIFIER);
$schemaName = $this->_lexer->token['value']; $schemaName = ltrim($this->_lexer->token['value'], '\\');
if (strrpos($schemaName, ':') !== false) { if (strrpos($schemaName, ':') !== false) {
list($namespaceAlias, $simpleClassName) = explode(':', $schemaName); list($namespaceAlias, $simpleClassName) = explode(':', $schemaName);

View File

@ -129,7 +129,7 @@ class BasicFunctionalTest extends \Doctrine\Tests\OrmFunctionalTestCase
$this->_em->clear(); $this->_em->clear();
$user2 = $this->_em->createQuery('select u from Doctrine\Tests\Models\CMS\CmsUser u where u.id=?1') $user2 = $this->_em->createQuery('select u from \Doctrine\Tests\Models\CMS\CmsUser u where u.id=?1')
->setParameter(1, $userId) ->setParameter(1, $userId)
->getSingleResult(); ->getSingleResult();
@ -440,7 +440,9 @@ class BasicFunctionalTest extends \Doctrine\Tests\OrmFunctionalTestCase
$this->_em->clear(); $this->_em->clear();
$articleNew = $this->_em->find('Doctrine\Tests\Models\CMS\CmsArticle', $articleId); // test find() with leading backslash at the same time
$articleNew = $this->_em->find('\Doctrine\Tests\Models\CMS\CmsArticle', $articleId);
$this->assertTrue($this->_em->contains($articleNew));
$this->assertEquals("Lorem ipsum dolor sunt.", $articleNew->text); $this->assertEquals("Lorem ipsum dolor sunt.", $articleNew->text);
$this->assertNotSame($article, $articleNew); $this->assertNotSame($article, $articleNew);