diff --git a/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php b/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php index 5cccadbe2..f3cdc7055 100644 --- a/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php +++ b/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php @@ -1329,7 +1329,7 @@ class BasicEntityPersister implements EntityPersister $resultColumnName = $this->getSQLColumnAlias($joinColumn['name']); $type = PersisterHelper::getTypeOfColumn($joinColumn['referencedColumnName'], $targetClass, $this->em); - $this->currentPersisterContext->rsm->addMetaResult($alias, $resultColumnName, $quotedColumn, $isIdentifier, $type); + $this->currentPersisterContext->rsm->addMetaResult($alias, $resultColumnName, $joinColumn['name'], $isIdentifier, $type); $columnList[] = sprintf('%s.%s AS %s', $sqlTableAlias, $quotedColumn, $resultColumnName); } diff --git a/lib/Doctrine/ORM/Query/SqlWalker.php b/lib/Doctrine/ORM/Query/SqlWalker.php index 57287c7cb..310034e69 100644 --- a/lib/Doctrine/ORM/Query/SqlWalker.php +++ b/lib/Doctrine/ORM/Query/SqlWalker.php @@ -764,7 +764,8 @@ class SqlWalker implements TreeWalker $columnAlias = $this->getSQLColumnAlias($columnName); $columnType = PersisterHelper::getTypeOfColumn($joinColumn['referencedColumnName'], $targetClass, $this->em); - $sqlSelectExpressions[] = $sqlTableAlias . '.' . $columnName . ' AS ' . $columnAlias; + $quotedColumnName = $this->quoteStrategy->getJoinColumnName($joinColumn, $class, $this->platform); + $sqlSelectExpressions[] = $sqlTableAlias . '.' . $quotedColumnName . ' AS ' . $columnAlias; $this->rsm->addMetaResult($dqlAlias, $columnAlias, $columnName, $isIdentifier, $columnType); } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6402Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6402Test.php new file mode 100644 index 000000000..50450a6b9 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6402Test.php @@ -0,0 +1,66 @@ +setUpEntitySchema([ + Address::class, + Group::class, + Phone::class, + User::class, + ]); + } catch (\Exception $exception) { + } + } + + public function testFind() + { + $id = $this->createAddress(); + + $address = $this->_em->find(Address::class, $id); + self::assertNotNull($address->user); + } + + public function testQuery() + { + $id = $this->createAddress(); + + $addresses = $this->_em->createQuery("SELECT a FROM " . Address::class . " a WHERE a.id = :id") + ->setParameter("id", $id) + ->getResult(); + + self::assertCount(1, $addresses); + self::assertNotNull($addresses[0]->user); + } + + private function createAddress() + { + $user = new User(); + $user->name = "foo"; + + $address = new Address(); + $address->zip = "bar"; + $user->setAddress($address); + + $this->_em->persist($user); + $this->_em->flush(); + $this->_em->clear(); + + return $address->id; + } +}