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