2013-12-18 59 views
0

我想通过一些属性过滤产品集合,包括diy_kit_price属性(已添加的新属性),如下所示。按多个价格范围筛选产品集合

价格范围:

  1. 0 - 5000
  2. 10000 - 15000

我尝试了几种方法,但没有运气。

工作守则:当我通过一个价格范围过滤:

$products = Mage::getModel('catalog/product')->getCollection() 
     ->addAttributeToSelect('*') 
     ->addAttributeToFilter('type_id', 'configurable') 
     ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left') 
     ->addAttributeToFilter('category_id', array(
      array('finset' => '37') 
      ))     
     ->addAttributeToSort('name', 'asc') 
     ->addAttributeToFilter('diy_kit_price', array('gt' => 0)) 
     ->addAttributeToFilter('diy_kit_price', array('lt' => 5000)); 

不工作代码:当我通过一个价格范围过滤:

$products = Mage::getModel('catalog/product')->getCollection() 
     ->addAttributeToSelect('*') 
     ->addAttributeToFilter('type_id', 'configurable') 
     ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left') 
     ->addAttributeToFilter('category_id', array(
      array('finset' => '37') 
      ))     
     ->addAttributeToSort('name', 'asc') 
     ->addAttributeToFilter('diy_kit_price', array('gt' => 0)) 
     ->addAttributeToFilter('diy_kit_price', array('lt' => 5000)) 
     ->addAttributeToFilter('diy_kit_price', array('gt' => 10000)) 
     ->addAttributeToFilter('diy_kit_price', array('lt' => 15000)); 

是否有任何其他的方式来过滤。我们可以使用具有多个价格范围的纯SQL进行过滤。

在此先感谢。

+0

在第二种情况下,实际上你的过滤器是从0到15000 5000和10000来说变得一无是处。你应该使用'(> 0 AND < 5k) OR (> 10k AND <15k)'。不确定是否可以在不转换为Zend查询的情况下完成。 – enenen

+1

如何使用您提到的代码。你能举个例子吗? – Sivakumar

回答

3

得到解决...... Hurreee ... :-)

->addFieldToFilter('diy_kit_price', 
    array(array('from'=>'0','to'=>'5000'), 
    array('from'=>'15000','to'=>'20000')) 
)