Magento,无法在成功页面上显示getSku()

时间:2014-07-17 12:16:36

标签: php magento

我试图在成功页面上回显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;

4 个答案:

答案 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. 
}