Как удалить элемент заказа из объекта заказа?

magento.stackexchange https://magento.stackexchange.com/questions/15966

  •  22-10-2019
  •  | 
  •  

Вопрос

Как удалить элемент заказа из объекта заказа? Например:

$order = Mage::getModel('sales/order')->load(1);

foreach($order->getAllItems() as $item) {
    $order->removeByItemId($item->getId());
}
Это было полезно?

Решение

Это больше взлом. Анкет Предупреждение: вы можете случайно удалить предметы, если вы не будете осторожны.

А getAllItems Метод фильтрует элементы из коллекции элементов и возвращает его. Чтобы фильтровать элементы из getAllItems массив вам просто нужно отметить желаемые предметы в коллекции как удаленные:

foreach($order->getAllItems() as $item) {
    $item->isDeleted(true);
}

Последующие звонки getAllItems Возвратит предметы, не помеченные как удаленные.

Теперь, где все становится волосатым это если вы звоните save на этом предмете, он удалит это. Анкет Это опасно.

Итак, я предлагаю вместо этого, это то, что вы создаете свою собственную коллекцию только с данными, которые, как вы знаете, хотите. Например:

$collection = new Varien_Data_Collection();

А потом заполняйте это:

foreach($order->getAllItems() as $item) {
    //some condition
    $collection->addItem($item);
}

Теперь ваша новая коллекция содержит только нужные данные, которые вы хотите, и вы можете передать это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top