From ce80065775698af903fab6f97d3046b20d8b6a47 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Mon, 20 Sep 2021 15:21:38 +0100 Subject: [PATCH] [DB] Add mechanism for specifying limit and offset in dql query --- src/Core/DB/DB.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Core/DB/DB.php b/src/Core/DB/DB.php index 64154abb1a..1c13a24644 100644 --- a/src/Core/DB/DB.php +++ b/src/Core/DB/DB.php @@ -84,14 +84,23 @@ class DB /** * Perform a Doctrine Query Language query */ - public static function dql(string $query, array $params = []) + public static function dql(string $query, array $params = [], array $options = []) { - $query = preg_replace(F\map(self::$table_map, function ($_, $s) { return "/\\b{$s}\\b/"; }), self::$table_map, $query); + $query = preg_replace(F\map(self::$table_map, fn ($_, $s) => "/\\b{$s}\\b/"), self::$table_map, $query); $q = new Query(self::$em); $q->setDQL($query); + + if (isset($options['limit'])) { + $q->setMaxResults($options['limit']); + } + if (isset($options['offset'])) { + $q->setFirstResult($options['offset']); + } + foreach ($params as $k => $v) { $q->setParameter($k, $v); } + return $q->getResult(); }