Skip to content

Instantly share code, notes, and snippets.

@toan-tam
Created April 25, 2020 06:00
Show Gist options
  • Save toan-tam/228d1d59843a805cae4e836ea77a4ae4 to your computer and use it in GitHub Desktop.
Save toan-tam/228d1d59843a805cae4e836ea77a4ae4 to your computer and use it in GitHub Desktop.
Search builder examples
<?php
require_once __DIR__ . '/../app/bootstrap.php';
use \Magento\Framework\Api\SortOrder;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
/** @var \Magento\Framework\App\State $appState */
$appState = $objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND);
/** @var Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
$searchCriteriaBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
$searchCriteriaBuilder->addFilter('entity_id', 2000, 'gt');
/** @var \Magento\Framework\Api\SortOrder $sortOrder1 */
/** @var \Magento\Framework\Api\SortOrder $sortOrder2 */
$sortOrder1 = $objectManager->get('\Magento\Framework\Api\SortOrder');
$sortOrder2 = $objectManager->get('\Magento\Framework\Api\SortOrder');
$sortOrder1->setField('name')->setDirection(SortOrder::SORT_ASC);
$sortOrder2->setField('price')->setDirection(SortOrder::SORT_DESC);
$searchCriteriaBuilder->setSortOrders([$sortOrder1, $sortOrder2]);
/** @var \Magento\Catalog\Model\ProductRepository $productRepository */
$productRepository = $objectManager->get('\Magento\Catalog\Model\ProductRepository');
$items = $productRepository->getList($searchCriteriaBuilder->create())->getItems();
echo "<pre>";
foreach ($items as $item){
var_dump(['name' => $item->getName(), 'price' => $item->getPrice()]);
}
<?php
require_once __DIR__ . '/../app/bootstrap.php';
use \Magento\Framework\Api\SortOrder;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
/** @var \Magento\Framework\App\State $appState */
$appState = $objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND);
/** @var Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
$searchCriteriaBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
$searchCriteriaBuilder->addFilter('entity_id', 2000, 'gt');
/** @var \Magento\Framework\Api\SortOrder $sortOrder1 */
/** @var \Magento\Framework\Api\SortOrder $sortOrder2 */
$sortOrder1 = $objectManager->create('\Magento\Framework\Api\SortOrder');
$sortOrder2 = $objectManager->create('\Magento\Framework\Api\SortOrder');
$sortOrder1->setField('name')->setDirection(SortOrder::SORT_ASC);
$sortOrder2->setField('price')->setDirection(SortOrder::SORT_DESC);
$searchCriteriaBuilder->setSortOrders([$sortOrder1, $sortOrder2]);
/** @var \Magento\Catalog\Model\ProductRepository $productRepository */
$productRepository = $objectManager->get('\Magento\Catalog\Model\ProductRepository');
$items = $productRepository->getList($searchCriteriaBuilder->create())->getItems();
echo "<pre>";
foreach ($items as $item){
var_dump(['name' => $item->getName(), 'price' => $item->getPrice()]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment