Как удалить элемент заказа из объекта заказа?
Вопрос
Как удалить элемент заказа из объекта заказа? Например:
$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);
}
Теперь ваша новая коллекция содержит только нужные данные, которые вы хотите, и вы можете передать это.