2013-05-13 7 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 ' –

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'; 
関連する問題