From a18ff95fc43ffe501eb2e54511ec3ec1109446a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20de=20Guillebon?= Date: Fri, 11 Sep 2015 17:17:28 +0200 Subject: [PATCH 1/3] Fixed wrong property name --- lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php index 413ac60bb..6fc5b0611 100644 --- a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php +++ b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php @@ -438,8 +438,8 @@ class ResultSetMappingBuilder extends ResultSetMapping $sql .= $class->fieldMappings[$this->fieldMappings[$columnName]]['columnName']; } else if (isset($this->metaMappings[$columnName])) { $sql .= $this->metaMappings[$columnName]; - } else if (isset($this->discriminatorColumn[$columnName])) { - $sql .= $this->discriminatorColumn[$columnName]; + } else if (isset($this->discriminatorColumns[$columnName])) { + $sql .= $this->discriminatorColumns[$columnName]; } $sql .= " AS " . $columnName; From 4b7d8511f89a5739bde2e0c9813fa4930a17be2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20de=20Guillebon?= Date: Mon, 14 Sep 2015 18:34:55 +0200 Subject: [PATCH 2/3] Fixed wrong variable used as array key --- lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php index 6fc5b0611..804a208ef 100644 --- a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php +++ b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php @@ -438,8 +438,8 @@ class ResultSetMappingBuilder extends ResultSetMapping $sql .= $class->fieldMappings[$this->fieldMappings[$columnName]]['columnName']; } else if (isset($this->metaMappings[$columnName])) { $sql .= $this->metaMappings[$columnName]; - } else if (isset($this->discriminatorColumns[$columnName])) { - $sql .= $this->discriminatorColumns[$columnName]; + } else if (isset($this->discriminatorColumns[$dqlAlias])) { + $sql .= $this->discriminatorColumns[$dqlAlias]; } $sql .= " AS " . $columnName; From ae243643e53fe7c0d5e26eadf8f2d4cd4cf274aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20de=20Guillebon?= Date: Mon, 14 Sep 2015 18:35:49 +0200 Subject: [PATCH 3/3] Added test --- .../Tests/Models/DDC3899/DDC3899Contract.php | 25 +++++++++++++++++++ .../Models/DDC3899/DDC3899FixContract.php | 12 +++++++++ .../Models/DDC3899/DDC3899FlexContract.php | 15 +++++++++++ .../Tests/Models/DDC3899/DDC3899User.php | 16 ++++++++++++ .../Tests/ORM/Functional/NativeQueryTest.php | 16 ++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 tests/Doctrine/Tests/Models/DDC3899/DDC3899Contract.php create mode 100644 tests/Doctrine/Tests/Models/DDC3899/DDC3899FixContract.php create mode 100644 tests/Doctrine/Tests/Models/DDC3899/DDC3899FlexContract.php create mode 100644 tests/Doctrine/Tests/Models/DDC3899/DDC3899User.php diff --git a/tests/Doctrine/Tests/Models/DDC3899/DDC3899Contract.php b/tests/Doctrine/Tests/Models/DDC3899/DDC3899Contract.php new file mode 100644 index 000000000..ddccd8c9a --- /dev/null +++ b/tests/Doctrine/Tests/Models/DDC3899/DDC3899Contract.php @@ -0,0 +1,25 @@ +assertSQLEquals('u.id AS id0, u.status AS status1, u.username AS username2, u.name AS name3, u.email_id AS email_id4', (string)$rsm); } + + /** + * @group DDC-3899 + */ + public function testGenerateSelectClauseWithDiscriminatorColumn() + { + $rsm = new ResultSetMappingBuilder($this->_em, ResultSetMappingBuilder::COLUMN_RENAMING_INCREMENT); + $rsm->addEntityResult('Doctrine\Tests\Models\DDC3899\DDC3899User', 'u'); + $rsm->addJoinedEntityResult('Doctrine\Tests\Models\DDC3899\DDC3899FixContract', 'c', 'u', 'contracts'); + $rsm->addFieldResult('u', $this->platform->getSQLResultCasing('id'), 'id'); + $rsm->setDiscriminatorColumn('c', $this->platform->getSQLResultCasing('discr')); + + $selectClause = $rsm->generateSelectClause(array('u' => 'u1', 'c' => 'c1')); + + $this->assertSQLEquals('u1.id as id, c1.discr as discr', $selectClause); + } }