系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
在Magento 2中,存储库是与数据交互的主要方式。使用存储库可以方便地访问数据并进行各种操作。下面是在Magento 2中使用存储库搜索的代码示例:
use Magento\Framework\Api\FilterBuilder; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Catalog\Api\ProductRepositoryInterface; class Example { protected $productRepository; protected $searchCriteriaBuilder; protected $filterBuilder; public function __construct( ProductRepositoryInterface $productRepository, SearchCriteriaBuilder $searchCriteriaBuilder, FilterBuilder $filterBuilder ) { $this->productRepository = $productRepository; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->filterBuilder = $filterBuilder; } public function searchProducts() { // Add filters $filter = $this->filterBuilder ->setField('name') ->setValue('%red%') ->setConditionType('like') ->create(); $this->searchCriteriaBuilder->addFilters([$filter]); // Set page size $this->searchCriteriaBuilder->setPageSize(10); // Get search criteria object $searchCriteria = $this->searchCriteriaBuilder->create(); // Search products $products = $this->productRepository->getList($searchCriteria); return $products; } }
在上面的示例中,我们首先注入了ProductRepositoryInterface、SearchCriteriaBuilder和FilterBuilder接口的实现。在searchProducts方法中,我们首先创建一个过滤器,以在名称字段中查找包含“red”的产品。然后,我们将此过滤器添加到搜索条件构建器中。接下来,我们设置每页显示10个产品的页面大小,并使用搜索条件构建器创建一个搜索条件对象。最后,我们使用ProductRepository的getList方法搜索产品,并将其返回。
此示例仅仅只是演示了搜索,实际上存储库可以使用更多的方法对数据进行操作,如添加、修改、删除等。