2013-05-13 65 views
7

我用下面的行加載從Magento的訂單的集合:過濾Magento的指令集

// Load Order Collection 
$order_collection = Mage::getModel('sales/order')->getCollection(); 

你如何篩選這個集合忽略與狀態令「取消」和「完成」?


更新

張貼在此之後,我很無聊,所以我做了一些周圍挖掘和這個職位幫我找到的代碼行權:http://www.magentocommerce.com/boards/v/viewthread/201797/#t287235

這是我如何解決它:

// Load Order Collection 
$order_collection = Mage::getModel('sales/order') 
->getCollection() 
->addAttributeToSelect('*') 
->addAttributeToFilter('status', array('nin' => array('canceled','complete'))); 

回答

11

使用addFieldToFilter方法

$order_collection = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', array('nin' => array('canceled','complete'))); 
+0

'寧' 代表 '不' 的方式。你可以在下面的類中找到一個過濾器列表:https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/lib/Varien/Data/Collection/Db.php - 檢查'_getConditionSql 」。 – 2013-05-13 14:41:39

1

如果你想使用原來的定義:

$order_collection = Mage::getModel('sales/order')->getCollection() 
    ->addFieldToFilter('status', array('nin' => array(
     Mage_Sales_Model_Order::STATE_NEW, 
     Mage_Sales_Model_Order::STATE_CANCELED 
      ))); 

像Mage_Sales_Model_Order定義:

/** 
* Order states 
*/ 
const STATE_NEW    = 'new'; 
const STATE_PENDING_PAYMENT = 'pending_payment'; 
const STATE_PROCESSING  = 'processing'; 
const STATE_COMPLETE  = 'complete'; 
const STATE_CLOSED   = 'closed'; 
const STATE_CANCELED  = 'canceled'; 
const STATE_HOLDED   = 'holded'; 
const STATE_PAYMENT_REVIEW = 'payment_review';