我正在使用以下代码在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
数量。我认为这应该会给你所问的预期结果。