我从sales_flat_order获得了3000多个实体ID,并且必须获取每个相应订单的项目。目前我正在使用此代码加载3000多个订单及其项目中的任何一个:
$orderItems = Mage::getModel('sales/order')->load($orderIdInForEach)->getAllItems();
这不是一个好主意,因为我遇到了内存问题。有没有更好的方法呢?
谢谢!
答案 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
方法只从数据库中获取一条记录,而不是所有会导致内存执行问题的对象。我希望这有助于为你清理事情。