diff --git a/src/Knp/Component/Pager/Event/Subscriber/Sortable/Doctrine/ORM/Query/OrderByWalker.php b/src/Knp/Component/Pager/Event/Subscriber/Sortable/Doctrine/ORM/Query/OrderByWalker.php index e8508090..69722502 100644 --- a/src/Knp/Component/Pager/Event/Subscriber/Sortable/Doctrine/ORM/Query/OrderByWalker.php +++ b/src/Knp/Component/Pager/Event/Subscriber/Sortable/Doctrine/ORM/Query/OrderByWalker.php @@ -71,21 +71,20 @@ public function walkSelectStatement(SelectStatement $AST): void $orderByItem->type = $direction; if ($AST->orderByClause) { - $set = false; - foreach ($AST->orderByClause->orderByItems as $item) { + $orderByItems = &$AST->orderByClause->orderByItems; + foreach ($orderByItems as $orderByIndex => $item) { if ( $item->expression instanceof PathExpression && $item->expression->identificationVariable === $alias && $item->expression->field === $field ) { - $item->type = $direction; - $set = true; + unset($orderByItems[$orderByIndex]); + break; } } - if (!$set) { - array_unshift($AST->orderByClause->orderByItems, $orderByItem); - } + + array_unshift($orderByItems, $orderByItem); } else { $AST->orderByClause = new OrderByClause([$orderByItem]); }