在Magento中加载许多订单 - 允许内存大小耗尽

时间:2015-05-28 10:07:11

标签: magento

我从sales_flat_order获得了3000多个实体ID,并且必须获取每个相应订单的项目。目前我正在使用此代码加载3000多个订单及其项目中的任何一个:

$orderItems = Mage::getModel('sales/order')->load($orderIdInForEach)->getAllItems();

这不是一个好主意,因为我遇到了内存问题。有没有更好的方法呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

加载许多项目的最佳方法是使用fetchItem方法进行收集。

$collection = $orderItems = Mage::getModel('sales/order');
while(($order = $collection->fetchItem())) {
    //Do your thing here without loading all orders 
    //that match the above collection filters.

    //Get current order items
    $orderItems = $order->getAllItems();
}

fetchitem方法只从数据库中获取一条记录,而不是所有会导致内存执行问题的对象。我希望这有助于为你清理事情。