To add Sort order in Magento,
Add \Magento\Framework\Api\SortOrderBuilder $sortOrderBuilder as dependency in constructor.
Base Definition Class:
\Magento\Framework\Api\SortOrderBuilder
In this Base class you can find below methods for sorting:
- setField
- setDirection
- setAscendingDirection
- setDescendingDirection
Check the below code snippet:
public function getSlides(int $sliderId, bool $onlyEnabled = false, bool $sorted = false): array
{
$this->searchCriteriaBuilder->addFilter(SlideInterface::SLIDER_ID, $sliderId);
if ($sorted) {
$sortOrder = $this->sortOrderBuilder->setField(SlideInterface::POSITION)
->setAscendingDirection()->create();
$this->searchCriteriaBuilder->addSortOrder($sortOrder);
}
$searchCriteria = $this->searchCriteriaBuilder->create();
$slides = $this->slideRepository->getList($searchCriteria);
return $slides->getItems();
}Now from above code snippet:
1. $this->sortOrderBuilder:
- This is an instance of a class that helps in building sort orders. In Magento 2, this is often an instance of
Magento\Framework\Api\SortOrderBuilder.
setField():- This method sets the field by which the collection should be sorted. For example, if you want to sort by
name, you would callsetField('name').
setAscendingDirection():- This method specifies the direction of the sort. It typically sorts in ascending order. There’s also usually a
setDescendingDirection()method if you want to sort in descending order.
create():- This method finalizes and creates the sort order object based on the provided field and direction.
Example in Context
Here’s a more detailed example showing how you might use these methods:
// Create a sort order builder instance
$sortOrderBuilder = $this->sortOrderBuilder;
// Set the field to sort by
$sortOrderBuilder->setField('name');
// Set the sort direction to ascending
$sortOrderBuilder->setAscendingDirection();
// Create the sort order object
$sortOrder = $sortOrderBuilder->create();In this example, we are creating a sort order that will sort by the name field in ascending order.
Usage
The created SortOrder object can then be used to modify the collection’s sorting:
$collection->setOrder('name', 'ASC');
Tag :
Magento2
0 Comments On "Add Sort Order with sortOrderBuilder in Magento2"