From 4c9059be40fd37fe4d33982fb42db9275f836df0 Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Tue, 5 Feb 2019 21:03:12 +0100 Subject: [PATCH] [FEATURE] Add where and order options for DbTableViewHelper --- Classes/ViewHelpers/DbTableViewHelper.php | 29 +++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/Classes/ViewHelpers/DbTableViewHelper.php b/Classes/ViewHelpers/DbTableViewHelper.php index b767516..d33f6ae 100644 --- a/Classes/ViewHelpers/DbTableViewHelper.php +++ b/Classes/ViewHelpers/DbTableViewHelper.php @@ -17,15 +17,36 @@ class DbTableViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHel /** * @param string $table The filename * @param string $fields The filename + * @param string $where + * @param string $orderBy * @return string HTML Content */ - public function render($table, $fields = ['*']){ + public function render($table, $fields = ['*'], $where = [], $orderBy = []){ $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('pages')->createQueryBuilder(); - $data = $queryBuilder->select(...$fields)->from($table) - ->execute() - ->fetchAll(); + + $whereExpressions = []; + if (!empty($where)) { + foreach ($where as $key => $row) { + $whereExpressions[] = $queryBuilder->expr()->eq($key, $queryBuilder->createNamedParameter($row)); + } + } + + $data = $queryBuilder->select(...$fields)->from($table); + if (!empty($whereExpressions)) { + $data = $data->where(...$whereExpressions); + } + if (!empty($orderBy)) { + if (!empty($orderBy[key($orderBy)])) { + $data = $data->orderBy(key($orderBy), $orderBy[key($orderBy)]); + } else { + $data = $data->orderBy(key($orderBy)); + } + } + $data = $data->execute()->fetchAll(); + + \TYPO3\CMS\Core\Utility\DebugUtility::debug($data); return $data; }