* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Grid\Query; use Doctrine\DBAL\Query\QueryBuilder; use PrestaShop\PrestaShop\Core\Grid\Search\SearchCriteriaInterface; /** * Class DoctrineSearchCriteriaApplicator applies search criteria to doctrine query builder. */ final class DoctrineSearchCriteriaApplicator implements DoctrineSearchCriteriaApplicatorInterface { /** * {@inheritdoc} */ public function applyPagination(SearchCriteriaInterface $searchCriteria, QueryBuilder $queryBuilder) { if (null !== $searchCriteria->getLimit()) { $queryBuilder->setMaxResults($searchCriteria->getLimit()); } if (null !== $searchCriteria->getOffset()) { $queryBuilder->setFirstResult($searchCriteria->getOffset()); } return $this; } /** * {@inheritdoc} */ public function applySorting(SearchCriteriaInterface $searchCriteria, QueryBuilder $queryBuilder) { if (null !== $searchCriteria->getOrderBy() && null !== $searchCriteria->getOrderWay()) { $queryBuilder->orderBy( $searchCriteria->getOrderBy(), $searchCriteria->getOrderWay() ); } return $this; } }