我的magento app中有这段代码
<?php
$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order_details = Mage::getModel('sales/order')->loadByIncrementId($order_id);
foreach ($order_details->getAllItems() as $item) {
//here i know we can get item name as $item->getName(), sku as $item->getSku()
//but how do we get the following details
//1.category name,2.store,3.tax,city,country,state
<?php } ?>
我知道只需print_r($order_details->getAllItems())
即可获得数组列表。但我不能在这种情况下执行此操作
答案 0 :(得分:2)
此商品与商品不同,但没有所有商品。您可以使用Mage::getModel('catalog/product')->load($item->getProductId());
快速方式来测试某些内容,但这会为循环中的每个项目向mysql添加额外的查询。或者我建议编辑sales xml - &gt;法师&gt;销售&gt;等等&gt; config.xml(在本地模块中)。您应该向节点sales_convert_quote_item或sales_convert_order_item添加要从产品到项目复制的属性。在您的情况下,它将是sales_convert_order_item节点,因为您正在处理订单。
答案 1 :(得分:1)
您需要加载完整的产品型号才能访问该数据。
您要加载的集合不是产品,它是订单商品的集合,其中包含与之相关的最少数据。您需要通过从订单项中获取产品来加载完整的产品模型。
试试这个:
<?php
$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order_details = Mage::getModel('sales/order')->loadByIncrementId($order_id);
?>
<?php foreach ($order_details->getAllItems() as $item): ?>
<?php $product = Mage::getModel('catalog/product')->load($item->getProductId()) ?>
<?php echo $product->getName() ?>
<?php // now you have the full product model/data loaded ?>
<?php endforeach ?>