Question

I have the following code:

$filter1 = $this->_filterBuilder->setField('name')
    ->setValue('%'.$searchTerm.'%')
    ->setConditionType("like")
    ->create();
$filter2 = $this->_filterBuilder->setField('description')
    ->setValue('%'.$searchTerm.'%')
    ->setConditionType("like")
    ->create();
$filterOR = $this->_filterGroupBuilder->addFilter($filter1)->addFilter($filter2)->create();
$this->_searchCriteriaBuilder->setFilterGroups([$filterOR]);
$this->_searchCriteriaBuilder->addSortOrder($searchOrder, SortOrder::SORT_ASC);
$searchCriteria = $this->_searchCriteriaBuilder->setCurrentPage($page)->setPageSize($pageSize)->create();
$searchResults = $this->_productRepository->getList($searchCriteria);

It throws an error:

Call to undefined method Magento\Framework\Api\Search\SearchCriteriaBuilder::setFilterGroups()

why?

Was it helpful?

Solution

There is no method setFilterGroups in the class Magento\Framework\Api\Search\SearchCriteriaBuilder
Not sure if this will work but you can try to remove the line that contains setFilterGroups and after the line

$searchCriteria = $this->_searchCriteriaBuilder->setCurrentPage($page)->setPageSize($pageSize)->create();

add this

$searchCriteria->setFilterGroups([$filterOR]);  

there is a mehtod setFilterGroups in Magento\Framework\Api\SearchCriteriaInterface and SearchCriteria class.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top