Получите коллекцию заказов, за исключением отмененного заказа в Magento 2


У меня есть коллекция заказов со следующим кодом:

$orders = $objectManager->create('Magento\Sales\Model\Order')->getCollection();

Который работает нормально. Проблема в том, что он возвращает все типы заказов, включая обработку '', ' отменено' и т.д. Я не хочу, чтобы отмененный заказ был в этой коллекции.

Я не знаю, как исключить отмененный заказ в приведенном выше коде.

Надеюсь, кто-нибудь поможет.

Author: Arshad Hussain, 2019-04-04

2 answers

Попробуйте это,

$orders = $objectManager->create('Magento\Sales\Model\Order')->getCollection();
$orders->addFieldToSelect('*')->addFieldToFilter('status', array('in' => array(complete,processing)));

Статус не в отмененном порядке попадет в коллекцию.

Не уверен в названии статуса отменено убедитесь, что вы используете точное имя в таблице sales_order таблицы.

 3
Author: Prathap Gunasekaran, 2019-04-05 10:49:11

Это не лучший способ получить коллекции в M2 с помощью диспетчера объектов. Вместо этого используйте для этой цели фактор сбора. Вот краткий пример:

use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;

class SomeClass
{
    ...
    public function __construct(
        ...
        CollectionFactory $orderCollectionFactory
        ...
    ) {
        ...
        $this->collectionFactory = $orderCollectionFactory;
        ...
    }
    ...
     public function getOrders(){
         $orders = $this->collectionFactory()->create()
             ->addFieldToSelect('*')
             ->addFieldToFilter('status', ['neq' => 'cancelled']);
         return $orders;
    }
}
 3
Author: Kirill, 2019-04-04 13:57:34