获取Magento的订单增量ID

时间:2010-02-03 21:51:07

标签: php magento

我正在尝试在success.phtml页面上获取Magento中的订单增量ID,以便我可以将其用于联盟会员跟踪。

我正在使用以下代码,但它在第二行给出错误;

$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();

错误如下:

  

致命错误:在第34行的非对象上调用成员函数getIncrementId():$ LastOrderId = $ order-> getIncrementId();

我想知道是否有人对如何获得订单增量ID有任何想法?这是管理员中看到的参考号,通常类似于:#1000123

10 个答案:

答案 0 :(得分:11)

如果您在结帐成功页面上专门执行此操作 - 在success.phtml中 - 那么获取订单增量ID的代码已在模板中提供,因为它会显示给客户。

您只需要以下内容:

$orderId = $this->getOrderId();

请注意,这不适用于其他网页,因此,您需要使用:

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();

答案 1 :(得分:7)

$代码中的订单是最后一个订单ID ...正如函数名称所暗示的那样。如果这不是您想要的值,那么使用它来加载订单,然后使用getter:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();

答案 2 :(得分:5)

这将完美地运行,我现在在我的模块中运行这个。

$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

希望它有助于谢谢。 :)

答案 3 :(得分:4)

致电

Mage::getSingleton('sales/order')

未返回对象。试试

var_dump(Mage::getSingleton('sales/order'));

确认。

我最近没有参加结帐代码,但我很确定这是因为sales/order会让您获得正在进行的订单。订单下达后,它就不再进行了。

执行此操作的“正确”方法是为结帐时Magento触发的其中一个事件创建观察者。在

checkout_onepage_controller_success_action
假设您没有对结帐流程进行太多自定义,那么

事件就足够了。

关于如何在the Wiki(针对不同的事件)执行此操作的简要说明

完成事件设置和响应后,请执行

$event = $observer->getEvent();
var_dump($event->getData());

查看您提供的信息类型。有可能在那里有一个订单对象,可以让你获得你想要的ID。

答案 4 :(得分:3)

我不得不使用......

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

在success.phtml模板中。而不是load()我使用了loadByIncrementId - 然后我的订单对象不再是空的。

答案 5 :(得分:3)

如果您处于管理模式 - 请尝试:

$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();

答案 6 :(得分:2)

getRealOrderId()似乎返回数据网格中显示的订单号。 getId()将返回数据库中您可能不想要的行的内部标识。

答案 7 :(得分:2)

您可以使用此代码段获取增量ID:

$orderId = 12;    
$order = Mage::getModel('sales/order')->load($orderId);
$Incrementid = $order->getIncrementId();

现在,您可以对$ Incrementid变量进行回显,并查看增量ID。

我希望这会有所帮助。

答案 8 :(得分:0)

$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

答案 9 :(得分:-1)

$shipmentID = $shipment->increment_id;

$order   = $shipment->getOrder();
$orderID = $order->increment_id;