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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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:
1 2 3 4 5 6 7 8 9 10 11 | // 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:
1 | $collection ->setOrder( 'name' , 'ASC' ); |
Tag :
Magento2
0 Comments On "Add Sort Order with sortOrderBuilder in Magento2"