From 8fec73673d056b443147e60ad7ed466d5cb71513 Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Mon, 4 Jun 2012 15:16:20 -0300 Subject: [PATCH] fix DDC-1719 in persiter and query level --- lib/Doctrine/ORM/Configuration.php | 4 ++-- lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php | 5 +++++ lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php | 3 +-- lib/Doctrine/ORM/Mapping/QuoteStrategy.php | 5 ++--- lib/Doctrine/ORM/Persisters/BasicEntityPersister.php | 2 +- lib/Doctrine/ORM/Tools/SchemaTool.php | 3 ++- tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1719Test.php | 2 -- tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php | 2 -- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index 67dcc5ba7..a0c1da563 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -633,7 +633,7 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Set quote strategy class. * - * @since 2.4 + * @since 2.3 * @param string $className */ public function setQuoteStrategyClassName($className) @@ -650,7 +650,7 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Get quote strategy class. * - * @since 2.4 + * @since 2.3 * @return string */ public function getQuoteStrategyClassName() diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php index d93d86214..24131d17e 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php @@ -1379,6 +1379,11 @@ class ClassMetadataInfo implements ClassMetadata if (empty($joinColumn['referencedColumnName'])) { $joinColumn['referencedColumnName'] = $this->namingStrategy->referenceColumnName(); } + if ($joinColumn['name'][0] == '`') { + $joinColumn['name'] = trim($joinColumn['name'], '`'); + $joinColumn['quoted'] = true; + } + $mapping['sourceToTargetKeyColumns'][$joinColumn['name']] = $joinColumn['referencedColumnName']; $mapping['joinColumnFieldNames'][$joinColumn['name']] = isset($joinColumn['fieldName']) ? $joinColumn['fieldName'] : $joinColumn['name']; diff --git a/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php b/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php index a887d407e..763e8784d 100644 --- a/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php +++ b/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php @@ -1,5 +1,4 @@ . */ diff --git a/lib/Doctrine/ORM/Mapping/QuoteStrategy.php b/lib/Doctrine/ORM/Mapping/QuoteStrategy.php index 4d42c4460..a7b7798dd 100644 --- a/lib/Doctrine/ORM/Mapping/QuoteStrategy.php +++ b/lib/Doctrine/ORM/Mapping/QuoteStrategy.php @@ -1,5 +1,4 @@ . */ @@ -28,7 +27,7 @@ use Doctrine\DBAL\Platforms\AbstractPlatform; * * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.doctrine-project.org - * @since 2.4 + * @since 2.3 * @author Fabio B. Silva */ abstract class QuoteStrategy diff --git a/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php b/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php index e0809fa7b..6ff0568cf 100644 --- a/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php +++ b/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php @@ -469,7 +469,7 @@ class BasicEntityPersister $identifier = $this->_em->getUnitOfWork()->getEntityIdentifier($entity); $this->deleteJoinTableRecords($identifier); - $id = array_combine($this->_class->getIdentifierColumnNames(), $identifier); + $id = array_combine($this->quoteStrategy->getIdentifierColumnNames($this->_class), $identifier); $this->_conn->delete($this->quoteStrategy->getTableName($this->_class), $id); } diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index d3cc44407..1f69e0057 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -217,7 +217,7 @@ class SchemaTool $pkColumns = array(); foreach ($class->identifier as $identifierField) { if (isset($class->fieldMappings[$identifierField])) { - $pkColumns[] = $this->quoteStrategy->getColumnName($identifierField, $class); + $pkColumns[] = $class->getColumnName($identifierField); } else if (isset($class->associationMappings[$identifierField])) { /* @var $assoc \Doctrine\ORM\Mapping\OneToOne */ $assoc = $class->associationMappings[$identifierField]; @@ -226,6 +226,7 @@ class SchemaTool } } } + if (!$table->hasIndex('primary')) { $table->setPrimaryKey($pkColumns); } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1719Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1719Test.php index cab55c609..1d5a2065b 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1719Test.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1719Test.php @@ -16,8 +16,6 @@ class DDC1719Test extends \Doctrine\Tests\OrmFunctionalTestCase protected function setUp() { - $this->markTestIncomplete(); - parent::setUp(); try { $this->_schemaTool->createSchema(array( diff --git a/tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php b/tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php index 3f5c66f20..50b87c159 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/QuoteStrategyTest.php @@ -138,8 +138,6 @@ class QuoteStrategyTest extends \Doctrine\Tests\OrmTestCase public function testQuoteJoinColumnNames() { - $this->markTestIncomplete(); - $cm = $this->createClassMetadata('Doctrine\Tests\Models\DDC117\DDC117ArticleDetails'); $cm->mapOneToOne(array(