2016-07-14 77 views
3

我正在使用Magento 1.9.2,並且正在開發自定義擴展。Magento - 如何獲取除具有特定狀態的訂單之外的所有訂單

這裏是我使用的代碼來選擇所有訂單的具體情況:

<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', 'complete'); ?> 

如何可以選擇所有訂單,除了與specfic地位的人?

下面是完整的代碼,我使用上面所示的代碼:

<?php echo $this->getMessagesBlock()->getGroupedHtml() ?> 
<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', 'complete') ?> 
<div class="page-title"> 
    <h1><?php echo $this->__('My Orders') ?></h1> 
</div> 
<?php echo $this->getChildHtml('info');?> 
<?php echo $this->getPagerHtml(); ?> 
<?php if($_orders->getSize()): ?> 
<table class="data-table orders" id="my-orders-table"> 
    <col width="1" /> 
    <col width="1" /> 
    <col /> 
    <col width="1" /> 
    <col width="1" /> 
    <col width="1" /> 
    <thead> 
     <tr> 
      <th class="number"><?php echo $this->__('Order #') ?></th> 
      <th class="date"><?php echo $this->__('Date') ?></th> 
      <th class="ship"><?php echo $this->__('Ship To') ?></th> 
      <th class="total"><span class="nobr"><?php echo $this->__('Order Total') ?></span></th> 
      <th class="status"><span class="nobr"><?php echo $this->__('Order Status') ?></span></th> 
      <th class="view">&nbsp;</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php $_odd = ''; ?> 
     <?php foreach ($_orders as $_order): ?> 
     <tr> 
      <td class="number"><?php echo $_order->getRealOrderId() ?></td> 
      <td class="date"><span class="nobr"><?php echo $this->formatDate($_order->getCreatedAtStoreDate()) ?></span></td> 
      <td class="ship"><?php echo $_order->getShippingAddress() ? $this->escapeHtml($_order->getShippingAddress()->getName()) : '&nbsp;' ?></td> 
      <td class="total"><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></td> 
      <td class="status"><em><?php echo $_order->getStatusLabel() ?></em></td> 
      <td class="a-center view"> 
       <span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a> 
        <?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a>&nbsp;*/ ?> 
        <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?> 
        <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a> 
       <?php endif ?> 
       </span> 
      </td> 
     </tr> 
     <?php endforeach; ?> 
    </tbody> 
</table> 
<script type="text/javascript">decorateTable('my-orders-table');</script> 
<?php echo $this->getPagerHtml(); ?> 
<?php else: ?> 
    <p><?php echo $this->__('You have placed no orders.'); ?></p> 
<?php endif ?> 

提前感謝!

回答

2
<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status',array('neq' => 'complete')); ?> 

或者當你有多個狀態

<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status',array('nin' => array('pending','complete'))); ?> 
+0

兩者都不能正常工作。我正在接受一個錯誤。 –

+0

@TonyStark這很奇怪它適用於我。你得到了什麼樣的錯誤。或許這個錯誤與PHP –

+0

中的可用內存有關@TonyStark嘗試添加 addAttributeToSelect('\ *')例如 $ _orders = Mage :: getModel('sales/order') - > getCollection() - > addAttributeToSelect(' \ *') - > addFieldToFilter('status',array('neq'=>'complete')); ?> –

1

您可以使用 「不等於」:

...->addAttributeToFilter('status', array('neq' => 'thestatus')); 
+0

似乎不工作。 –

1
<?php $_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status',array('neq' => 'complete')); ?> 
+0

這和已經接受的答案 –

+0

完全一樣是的答案是一樣的。 – Naveenbos

相關問題