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

Collections Magento 2按价格范围获取产品系列,collections,magento2,Collections,Magento2,如何根据Magento 2中的pricerange创建产品集合。 这就是我到目前为止所做的: <?php namespace Qxs\Related\Block; class Related extends \Magento\Framework\View\Element\Template { protected $_productCollectionFactory; public function __construct( \Magento\Backen

如何根据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');
    }
}
?>
但是,代码不会返回包含价格范围的结果。结果完全为空,但应返回一些产品,我如何筛选价格范围


谢谢,

范围过滤器,我用addFieldToFilter以这种方式工作。你试过了吗

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

->addFieldToFilter'special_price',['from'=>0',to'=>1000]不起作用。这很奇怪,我试过一些产品,它对我有效,正常价格,比如$products=$this->\u productCollectionFactory->create->addAttributeToSelect'*'->addFieldToFilter'price',array'from'=>0',to'=>5->setPageSize5;你是对的,状态和可见性过滤器阻止范围显示。你知道为什么吗?事实上没有,我还没有尝试过这些类型的过滤器,只是发现了这个问题,我想到它们可能没有很好地初始化。我无法将它们的声明视为类属性。。。您是否检查了返回的值?