首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Magento 1销售/订单收集返回重复订单

Magento 1销售/订单收集返回重复订单
EN

Stack Overflow用户
提问于 2018-12-05 14:01:57
回答 1查看 272关注 0票数 2

使用Magento 1.14.3.4,我试图导出所有新订单和订单项目如下:

代码语言:javascript
运行
复制
$orders = Mage::getModel('sales/order')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('created_at', array('from' => $date_from,'to' => $date_to))
    ->addAttributeToFilter('status', array('nin' => array('canceled', 'pending_payment', 'holded')))
    ->load();

我想循环通过订单foreach($orders as $order),在这个循环中,我想循环通过产品foreach($order['items']作为$item))

我不明白为什么要返回集合中相同顺序的多个副本。重复订单的数量似乎与订单中的产品数量相关--因此,在订单中购买9种产品的订单将有9份副本。

在我看来,我是在加载订单项而不是订单中的项目数据--尽管如果是这样的话,对我来说,整个订单被复制是没有意义的。

如有任何建议,将不胜感激。

编辑-集合源输出

下面是集合结构的提取和缩减输出。

代码语言:javascript
运行
复制
array(164) {
    [115]=>
        array(32) {
            ["id"]=>string(9) "100083056"
            ...
            ["account"]=>array(12) {...}
            ["billing_address"]=>array(13) {...}
            ["shipping_address"]=>array(13) {...}
            ["items"]=>
                array(1) {
                    [0]=>
                        array(22) {
                            ["item_id"]=>string(6) "194844"
                            ...
                    }
                }
            }
        }
    [116]=>
        array(32) {
            ["id"]=>string(9) "100083056"
            ...
            ["account"]=>array(12) {...}
            ["billing_address"]=>array(13) {...}
            ["shipping_address"]=>array(13) {...}
            ["items"]=>
                array(2) {
                    [0]=>
                        array(22) {
                            ["item_id"]=>
                                string(6) "194844"
                                ...
                        }
                    [1]=>
                        array(22) {
                            ["item_id"]=>
                            string(6) "194845"
                            ...
                        }
                    }
                }
    [117]=>
        array(32) {
            ["id"]=>string(9) "100083056"
            ...
            ["account"]=>array(12) {...}
            ["billing_address"]=>array(13) {...}
            ["shipping_address"]=>array(13) {...}
            ["items"]=>
                array(3) {
                    [0]=>
                        array(22) {
                            ["item_id"]=>
                                string(6) "194844"
                                ...
                        }
                    [1]=>
                        array(22) {
                            ["item_id"]=>
                                string(6) "194845"
                                ...
                        }
                    [2]=>
                        array(22) {
                            ["item_id"]=>
                                string(6) "194846"
                                ...
                        }
                    }
                }
        }

现在我已经格式化了它,我意识到每个重复的订单实际上不是一个重复的订单记录,而是在items数组中添加了一个额外的产品项。

EN

回答 1

Stack Overflow用户

发布于 2018-12-05 14:14:31

我建议你不要直接使用load(),因为你不知道这个集合到底有多大。您可以一步一步地加载此集合的项,如下所示(这在内存上更容易):

代码语言:javascript
运行
复制
$orders = Mage::getModel('sales/order')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('created_at', array('from' => $date_from,'to' => $date_to))
->addAttributeToFilter('status', array('nin' => array('canceled', 'pending_payment', 'holded')));
$orders->setPageSize(100); //N orders per loop



$pages = $orders->getLastPageNumber();
$currentPage = 1;
do{
    $orders->setCurPage($currentPage);
    $orders->load();
    foreach ($orders as $order){
        //here you can do things with a single order
    }
    $orders->clear();
    $currentPage++;
} while ($currentPage <= $pages);

接下来,我将使用实际的getter方法getAllItems()加载订单项,然后从那里查看:

代码语言:javascript
运行
复制
foreach($order->getAllItems() as $orderItem) {
 // $orderItem->getName() ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53634089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档