diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php index 9905410e4cdf7553b1668d9d7a58ec6c455eda39..da0364bf513c42b6abdbc433ba0091ec9ae68b25 100644 --- a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php +++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php @@ -313,9 +313,21 @@ class Typo3DbBackend implements BackendInterface, SingletonInterface public function getMaxValueFromTable($tableName, array $where, $columnName) { try { - $result = $this->connectionPool->getConnectionForTable($tableName) - ->select([$columnName], $tableName, $where, [], [$columnName => 'DESC'], 1) - ->fetchColumn(0); + $queryBuilder = $this->connectionPool->getQueryBuilderForTable($tableName); + $queryBuilder->getRestrictions()->removeAll(); + $queryBuilder + ->select($columnName) + ->from($tableName) + ->orderBy($columnName, 'DESC') + ->setMaxResults(1); + + foreach ($where as $fieldName => $value) { + $queryBuilder->andWhere( + $queryBuilder->expr()->eq($fieldName, $queryBuilder->createNamedParameter($value)) + ); + } + + $result = $queryBuilder->execute()->fetchColumn(0); } catch (DBALException $e) { throw new SqlErrorException($e->getPrevious()->getMessage(), 1470230770); } @@ -333,9 +345,19 @@ class Typo3DbBackend implements BackendInterface, SingletonInterface public function getRowByIdentifier($tableName, array $where) { try { - $row = $this->connectionPool->getConnectionForTable($tableName) - ->select(['*'], $tableName, $where) - ->fetch(); + $queryBuilder = $this->connectionPool->getQueryBuilderForTable($tableName); + $queryBuilder->getRestrictions()->removeAll(); + $queryBuilder + ->select('*') + ->from($tableName); + + foreach ($where as $fieldName => $value) { + $queryBuilder->andWhere( + $queryBuilder->expr()->eq($fieldName, $queryBuilder->createNamedParameter($value)) + ); + } + + $row = $queryBuilder->execute()->fetch(); } catch (DBALException $e) { throw new SqlErrorException($e->getPrevious()->getMessage(), 1470230771); } @@ -917,7 +939,13 @@ class Typo3DbBackend implements BackendInterface, SingletonInterface $storagePage = null; $columns = $this->databaseHandle->admin_get_fields($tableName); if (array_key_exists('pid', $columns)) { - $result = $this->connectionPool->getConnectionForTable($tableName)->select(['pid'], $tableName, ['uid' => (int)$uid]); + $queryBuilder = $this->connectionPool->getQueryBuilderForTable($tableName); + $queryBuilder->getRestrictions()->removeAll(); + $result = $queryBuilder + ->select('pid') + ->from($tableName) + ->where($queryBuilder->expr()->eq('uid', (int)$uid)) + ->execute(); if ($row = $result->fetch()) { $storagePage = $row['pid']; $pageIdsToClear[] = $storagePage;