From aa121e326bcc55e7ded0a91e111baa7cae2226b2 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 18 Aug 2020 14:15:12 +0300 Subject: [PATCH] remove raw sql --- application/Espo/Services/Stream.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/application/Espo/Services/Stream.php b/application/Espo/Services/Stream.php index 2913934be4..2e29199a5f 100644 --- a/application/Espo/Services/Stream.php +++ b/application/Espo/Services/Stream.php @@ -37,6 +37,7 @@ use Espo\ORM\{ EntityCollection, QueryParams\Select, }; + use Espo\Entities\User; use Espo\Core\{ @@ -711,7 +712,8 @@ class Stream } } - $sqlPartList = []; + $queryList = []; + foreach ($selectParamsList as $i => $selectParams) { if (empty($selectParams['whereClause'])) { $selectParams['whereClause'] = []; @@ -727,14 +729,24 @@ class Stream } } - $sqlPartList[] = "(\n" . $this->entityManager->getQueryComposer()->createSelectQuery('Note', $selectParams) . "\n)"; + $selectParams['from'] = 'Note'; + + $queryList[] = Select::fromRaw($selectParams); } - $sql = implode("\n UNION ALL \n", $sqlPartList) . " - ORDER BY number DESC - "; + $builder = $this->entityManager->getQueryBuilder() + ->union() + ->all() + ->order('number', 'DESC') + ->limit($offset, $maxSize + 1); - $sql = $this->entityManager->getQueryComposer()->limit($sql, $offset, $maxSize + 1); + foreach ($queryList as $query) { + $builder->query($query); + } + + $unionQuery = $builder->build(); + + $sql = $this->entityManager->getQueryComposer()->compose($unionQuery); $sthCollection = $this->entityManager->getRepository('Note')->findBySql($sql);