Last active
March 13, 2020 19:00
-
-
Save 0-Sony/b05eab5c3f71147750cc259b7c5dab52 to your computer and use it in GitHub Desktop.
Magento 2 : Example of using searchCriteriaBuiler
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace MyNameSpace\Catalog\Block\Product | |
| use Magento\Catalog\Model\ProductRepository; | |
| use Magento\Framework\Api\FilterBuilder; | |
| use Magento\Framework\Api\Search\FilterGroupBuilder; | |
| use Magento\Framework\Api\SearchCriteriaBuilder; | |
| use Magento\Framework\View\Element\Template; | |
| class MyClass extends Template | |
| { | |
| /** @var \Magento\Framework\Registry */ | |
| protected $_coreRegistry; | |
| /** @var ProductRepository */ | |
| private $_productRepository; | |
| /** @var FilterBuilder */ | |
| private $_filterBuilder; | |
| /** @var FilterGroupBuilder */ | |
| private $_filterGroupBuilder; | |
| /** @var SearchCriteriaBuilder */ | |
| private $_searchCriteriaBuilder; | |
| public function __construct( | |
| \Magento\Catalog\Block\Product\Context $context, | |
| array $data, | |
| SearchCriteriaBuilder $searchCriteriaBuilder, | |
| FilterBuilder $filterBuilder, | |
| FilterGroupBuilder $filterGroupBuilder, | |
| ProductRepository $productRepository | |
| ) { | |
| parent::__construct($context, $data); | |
| $this->_coreRegistry = $context->getRegistry(); | |
| $this->_productRepository = $productRepository; | |
| $this->_filterBuilder = $filterBuilder; | |
| $this->_filterGroupBuilder = $filterGroupBuilder; | |
| $this->_searchCriteriaBuilder = $searchCriteriaBuilder; | |
| } | |
| /** | |
| * Get Current Product | |
| * @return \Magento\Catalog\Model\Product | |
| */ | |
| public function getProduct() | |
| { | |
| return $this->_coreRegistry->registry('product'); | |
| } | |
| /** | |
| * Get y own Product List | |
| * @return \Magento\Catalog\Api\Data\ProductInterface[] | |
| */ | |
| public function getMyProducts() | |
| { /** @var \Magento\Catalog\Model\Product $product */ | |
| $product = $this->getProduct(); | |
| $customAttributeFilter = $this->_filterBuilder | |
| ->setField('my_custom_attribute') | |
| ->setValue($product->getData('my_custom_attribute')) | |
| ->setConditionType('eq') | |
| ->create(); | |
| $attributeSetFilter = $this->_filterBuilder | |
| ->setField('attribute_set_id') | |
| ->setValue($product->getAttributeSetId()) | |
| ->setConditionType('eq') | |
| ->create(); | |
| $filterGroupContract = $this->_filterGroupBuilder | |
| ->addFilter($customAttributeFilter) | |
| ->create(); | |
| $filterGroupAttributeSet = $this->_filterGroupBuilder | |
| ->addFilter($attributeSetFilter) | |
| ->create(); | |
| $criteria = $this->_searchCriteriaBuilder | |
| ->setFilterGroups(array($customAttributeFilter , $filterGroupAttributeSet)) | |
| ->create(); | |
| $productRepository = $this->_productRepository; | |
| return $productRepository->getList($criteria)->getItems(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment