Skip to content

Commit 4e9598d

Browse files
darylhollingSeb33300
authored andcommitted
Add _ prefix to reserved joined table name alias (stwe#904)
1 parent cb55143 commit 4e9598d

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

Response/DatatableQueryBuilder.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ public function __construct(array $requestParams, DatatableInterface $datatable)
207207
$this->entityName = $datatable->getEntity();
208208

209209
$this->metadata = $this->getMetadata($this->entityName);
210-
$this->entityShortName = $this->getEntityShortName($this->metadata, $this->em);
210+
$this->entityShortName = $this->getSafeName(strtolower($this->metadata->getReflectionClass()->getShortName()));
211+
211212
$this->rootEntityIdentifier = $this->getIdentifier($this->metadata);
212213

213214
$this->qb = $this->em->createQueryBuilder()->from($this->entityName, $this->entityShortName);
@@ -262,6 +263,7 @@ private function initColumnArrays()
262263

263264
$currentPart = array_shift($parts);
264265
$currentAlias = ($previousPart === $this->entityShortName ? '' : $previousPart.'_').$currentPart;
266+
$currentAlias = $this->getSafeName($currentAlias);
265267

266268
if (!array_key_exists($previousAlias.'.'.$currentPart, $this->joins)) {
267269
$this->addJoin($previousAlias.'.'.$currentPart, $currentAlias, $this->accessor->getValue($column, 'joinType'));
@@ -755,24 +757,21 @@ private function getMetadata($entityName)
755757
}
756758

757759
/**
758-
* Get entity short name.
759-
*
760-
* @param ClassMetadata $metadata
761-
* @param EntityManagerInterface $entityManager
760+
* Get safe name.
762761
*
762+
* @param $name
763763
* @return string
764764
*/
765-
private function getEntityShortName(ClassMetadata $metadata, EntityManagerInterface $entityManager)
765+
private function getSafeName($name)
766766
{
767-
$entityShortName = strtolower($metadata->getReflectionClass()->getShortName());
768767
try {
769-
$reservedKeywordsList = $entityManager->getConnection()->getDatabasePlatform()->getReservedKeywordsList();
770-
$isReservedKeyword = $reservedKeywordsList->isKeyword($entityShortName);
768+
$reservedKeywordsList = $this->em->getConnection()->getDatabasePlatform()->getReservedKeywordsList();
769+
$isReservedKeyword = $reservedKeywordsList->isKeyword($name);
771770
} catch (DBALException $exception) {
772771
$isReservedKeyword = false;
773772
}
774773

775-
return $isReservedKeyword ? "_{$entityShortName}" : $entityShortName;
774+
return $isReservedKeyword ? "_{$name}" : $name;
776775
}
777776

778777
/**

0 commit comments

Comments
 (0)