我试图在成功页面上回显getSku(),但它返回0.我可以使用getGrandTotal()或getId(),但我无法使getSku()工作。有什么想法吗?
代码:
$customer_email = Mage::getSingleton('customer/session')->getCustomer()->getEmail();
$collection = Mage::getModel('sales/order')
->getCollection()
->getItemsCollection()
->addFieldToFilter('status', 'pending_payment')
->addAttributeToFilter('customer_email',array('like'=>$customer_email));
foreach($collection as $order){
//do something
//echo round($order->getGrandTotal(),2) . " ";
$sum += $order->getSku();
} echo $sum;
答案 0 :(得分:0)
这是因为没有加载完整的产品。以下代码应该为您解决问题:
foreach($collection as $order){
// load the product from the ID
$product = Mage::getModel('catalog/product')->load($order->getProductId());
//do something
//echo round($order->getGrandTotal(),2) . " ";
$sum += $product->getSku();
}
我不确定添加SKU是否是您想要做的,因为SKU通常是字母数字?对不起,如果我误解了!
答案 1 :(得分:0)
因此您可以使用该ID加载该产品,然后也可以获得sku。
$productModel = Mage::getModel('catalog/product')->load($id);
echo $productModel->getSku();
如果有帮助,不要忘记喜欢我的答案
答案 2 :(得分:0)
不要做其他问题的建议,在循环中加载模型是不好的,应该不惜一切代价避免。你也不应该在循环中调用getItemsCollection
。
您当前的代码甚至没有运行,因为订单集合中没有名为getItemsCollection
的方法。这是订单对象的一部分。
假设您只想要特定客户的待付款订单的所有skus,您可以使用以下内容:
// Get all orders matching our conditions.
$orderCollection = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('status', 'pending_payment')
->addFieldToFilter('customer_email', array('like' => $customer_email));
// Get all items associated with those orders.
$itemCollection = Mage::getModel('sales/order_item')->getCollection()
->addFieldToFilter('order_id', array('in' => $orderCollection->getAllIds()));
// Now do whatever you want with your order item.
foreach ($itemCollection as $item) {
var_dump($item->getSku());
}
答案 3 :(得分:0)
使用success.phtml上的会话加载订单
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
Now load order
$order = Mage::getModel('sales/order');
$order->load($lastOrderId);
ordered_items = $order->getAllItems();
foreach($ordered_items as $item){
//item detail
echo $item->getItemId(); //product id
echo $item->getSku();
echo $item->getQtyOrdered();
//ordered qty of item
echo $item->getName();
// etc.
}