Magento 2按价格范围获得产品系列

时间:2018-02-15 09:58:49

标签: collections magento2

如何根据Magento 2中的pricerange创建生产集合。 这就是我到目前为止所做的:

<?php namespace Qxs\Related\Block;

class Related extends \Magento\Framework\View\Element\Template
{
    protected $_productCollectionFactory;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        \Magento\Catalog\Model\Product\Attribute\Source\Status $productStatus,
        \Magento\Catalog\Model\Product\Visibility $productVisibility,
        array $data = []
    )
    {
        $this->_productCollectionFactory = $productCollectionFactory;
        $this->productStatus = $productStatus;
        $this->productVisibility = $productVisibility;
        parent::__construct($context, $data);
    }

    public function getProductCollection()
    {
      //var_dump($this->currentProduct());
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*')
          ->addAttributeToFilter('special_price', ['from' => 0, 'to' => 1000])
          ->addAttributeToFilter('status', ['in' => $this->productStatus->getVisibleStatusIds()])
          ->setVisibility($this->productVisibility->getVisibleInSiteIds())
          ->setPageSize(5);

        return $collection;
    }

    public function currentProduct()
    {
      return $this->_coreRegistry->registry('product');
    }
}
?>

但是,代码不会返回包含价格范围的结果。结果是完全空的,但应该返回一些产品,我如何过滤价格范围?

谢谢,

1 个答案:

答案 0 :(得分:1)

使用addFieldToFilter以这种方式工作的范围过滤器。你试过吗?

$orders = $this->_orderCollectionFactory->create()
            ->addAttributeToSelect('*')
            ->addFieldToFilter( 'created_at' , array('from' => $dateFrom, 'to' => $dateTo) )
            ->setOrder('created_at', 'desc' );
            ->setPageSize(200);