Skip to content

Commit 3b87ae2

Browse files
Merge pull request #41 from andrewmenich/feature/reduce-tally-query-scope
Improve performance of sort method
2 parents 6905a11 + d181a3e commit 3b87ae2

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/services/Query.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ public function userVote(int $userId, int $elementId, ?string $key = null): int
255255
public function orderByTally(ElementQuery $query, ?string $key = null): void
256256
{
257257
// Get and sort element IDs
258-
$elementIds = $this->_elementIdsByTally($key);
258+
$elementIds = $this->_elementIdsByTally($key, $query);
259259

260260
// If no element IDs, bail
261261
if (!$elementIds) {
@@ -271,9 +271,11 @@ public function orderByTally(ElementQuery $query, ?string $key = null): void
271271
* Get and sort element IDs.
272272
*
273273
* @param null|string $key
274+
* @param ElementQuery $query
275+
* @param bool $useQueryIds
274276
* @return array
275277
*/
276-
private function _elementIdsByTally(?string $key): array
278+
private function _elementIdsByTally(?string $key, ElementQuery $query): array
277279
{
278280
// If key isn't valid, bail with empty array
279281
if (!Upvote::$plugin->upvote->validKey($key)) {
@@ -313,10 +315,11 @@ private function _elementIdsByTally(?string $key): array
313315
$elementIds = (new CraftQuery())
314316
->select('[[elements.id]]')
315317
->from('{{%elements}} elements')
318+
->where(['[[elements.type]]' => $query->elementType])
316319
->leftJoin(['subquery' => $subquery], '[[elements.id]] = [[subquery.elementId]]')
317320
->orderBy([new Expression($queryOrder)])
318321
->column();
319-
322+
320323
// Return element IDs in order of highest voted
321324
return $elementIds;
322325
}

0 commit comments

Comments
 (0)