2013-12-18 93 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')) 
)