2013-05-13 14 views
7

używam następujący wiersz, aby załadować zbiór zleceń z Magento:filtr pochłaniający zamówienie Magento

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

Jak można filtrować tę kolekcję do ignorowania rozkazów ze statusem „anulowano” i „pełny”?


Aktualizacja

Po wysłaniu tego, byłem znudzony więc zrobiłem kilka kopanie wokół i ten post pomógł mi znaleźć odpowiednie linie kodu: http://www.magentocommerce.com/boards/v/viewthread/201797/#t287235

To jak ja rozwiązałem :

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

Odpowiedz

11

pomocą metody addFieldToFilter

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

'nin' oznacza 'nie' przy okazji. możesz znaleźć listę filtrów w następującej klasie: https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/lib/Varien/Data/Collection/Db.php - Zaznacz komentarz dla '_getConditionSql ". –

1

Jeśli chcesz korzystać z oryginalnych definicje:

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

jak zdefiniowano w 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'; 
Powiązane problemy