如果在同一订单中多次购买同一商品,请视为多个单独的商品


If the same item is purchased multiple times in the same order, treat as multiple individual items

我正在使用以下代码在Magento(4.1.1)中提取订单详细信息,这工作正常。但是,如果一个产品已经订购了两次,我需要重复一行,所以如果在同一订单中多次购买同一商品,则需要将它们视为多个单独的商品 - 目前Magento返回一个单一的产品线,具有多次购买同一商品的数量值:

$_customerId = Mage::getSingleton('customer/session')->getCustomerId();
    $lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
    $order = Mage::getSingleton('sales/order'); 
    $order->load($lastOrderId);
    $_totalData =$order->getData(); 
    $_order   = $this->getOrder();
    $allitems = $order->getAllItems();
    $index    = 1;
    $data   = ""
    foreach($allitems as $item)
    {
      $cjData.="|".$item->getPrice()."::".$item->getName()."::".$item->getQtyToShip();
      $index++;
    }
    echo $cjData

如果以同一订单多次购买同一项目,我需要将它们视为多个单独的项目-任何有助于实现这一目标的帮助都非常感谢。

您可以尝试添加一个 for 循环,根据每个行项目的数量循环 x 次:

foreach($allitems as $item)
{   
    for($i = 1; $i <= $item->getQtyToShip(); $i++) {
        $cjData.="|".$item->getPrice()."::".$item->getName()."::1";
        $index++;   
    }
}

我还没有对此进行测试,因此可能需要一些调整,但基本概念是循环直到$i等于$item->getQtyToShip(),并且在循环的每次迭代中,$i将通过$i++递增。

我还将字符串分配更改为$cjData,以便为每个添加到$cjData的项目仅提供1数量。我认为这应该会给你所问的预期结果。