Magento getAllVisibleItems(),getAllItems返回项目两次

Magento getAllVisibleItems(),getAllItems返回项目两次,magento,magento-1.7,Magento,Magento 1.7,我正在尝试做一些非常简单的事情——从订单中获取物品。Magento 1.7似乎为此提供了三个功能 getAllItems():返回所有项目两次。归还的物品 类型简单(不可配置) getItemsCollection():同上 getAllVisibleItems():同上 我在别处读到的许多答案都指出这个问题是由“父”和“子”产品引起的,但我的数据库中没有。我已经检查了定义父/子关系的表,它们都是空的 以下是我正在运行的代码: $order = Mage::getModel(

我正在尝试做一些非常简单的事情——从订单中获取物品。Magento 1.7似乎为此提供了三个功能

  • getAllItems():返回所有项目两次。归还的物品 类型简单(不可配置)
  • getItemsCollection():同上
  • getAllVisibleItems():同上
我在别处读到的许多答案都指出这个问题是由“父”和“子”产品引起的,但我的数据库中没有。我已经检查了定义父/子关系的表,它们都是空的

以下是我正在运行的代码:

        $order = Mage::getModel("sales/order")->load($order_id, 'increment_id'); //load order by order id

        $ordered_items = $order->getAllVisibleItems();
        //$ordered_items = $order->getAllItems();
        //$ordered_items = $order->getItemsCollection();

        foreach($ordered_items as $item)
        {
            if($this->debug)
            {
                echo $item->getItemId()."</br>";
                echo $item->getProductId()."</br>";
                echo $item->getSku()."</br>";
                echo $item->getQtyOrdered()."</br>";
                echo $item->getName()."</br>";
            }

            echo("*************************************************</br>");

        }

And the output is 
6
934
1003
1.0000
ProductA
*************************************************
6
934
1003
1.0000
ProductA
*************************************************
$order=Mage::getModel(“销售/订单”)->加载($order\u id,'increment\u id')//按订单id加载订单
$ordered_items=$order->getAllVisibleItems();
//$ordered_items=$order->getAllItems();
//$ordered_items=$order->getItemsCollection();
foreach($ordered_items作为$item)
{
如果($this->debug)
{
echo$item->getItemId()。“
”; echo$item->getProductId()。“
”; echo$item->getSku()。“
”; echo$item->getQtyOrdered()。“
”; echo$item->getName()。“
”; } 回声(“*****************************************************************
”; } 输出是 6. 934 1003 1 产品A ************************************************* 6. 934 1003 1 产品A *************************************************

正如您所看到的,输出的第一个数字是实际的实体id-因此我得到的是同一项目的真实副本?

您必须使用此代码

$order = Mage::getModel("sales/order")->load($order_id, 'increment_id');
$_items = $order->getItemsCollection();

 foreach ($_items as $item) {
    if ($item->getParentItem()) continue;
    //do something
    echo $item->getSku();
}

我刚刚查看了sales\u flat\u order\u项目,以确认此产品在订单ID中只有一个条目,您的代码放在哪里了?您确定这不是实际调用两次的函数,而不是重复的项吗?duhhh。。。。你完全正确。我们刚刚单独测试了代码,这些项只出现一次。仍然不确定错误在哪里,但这不是Magento函数的问题(当然不是!)谢谢-很抱歉浪费您的时间!如果有什么安慰的话-你为我节省了几个小时。也许你必须将标题编辑为[已解决]