web-dev-qa-db-ja.com

Magentoで注文増分IDを取得する

これをアフィリエイト追跡に使用できるように、success.phtmlページでMagentoの注文増分IDを取得しようとしています。

次のコードを使用していますが、2行目にエラーが発生しています。

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

エラーは次のとおりです。

致命的なエラー:34行目の非オブジェクトに対するメンバー関数getIncrementId()の呼び出し:$ LastOrderId = $ order-> getIncrementId();

Order Increment Idを取得する方法について何かアイデアはありませんか?これは、管理者に表示される参照番号で、通常は次のようなものです。#1000123

16
doubleplusgood

チェックアウト成功ページ(success.phtml内)でこれを具体的に実行している場合、注文インクリメントIDを取得するコードは、顧客に表示されるため、テンプレートですでに使用可能です。

次のものが必要です。

$orderId = $this->getOrderId();

これは他のページでは機能しないことに注意してください。そのため、これらを使用する必要があります。

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

コード内の$ orderは、関数名が示すように、最後の注文IDです。これが必要な値でない場合は、それを使用して注文をロードし、その上でゲッターを使用します。

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

これは完璧に機能します。これをモジュールで実行しています。

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

ありがとうございます。 :)

5
Chiragit007

への電話

Mage::getSingleton('sales/order')

オブジェクトを返していません。試す

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

確認するために。

最近、チェックアウトコードについて詳しく説明していませんが、sales/orderは進行中の注文を取得します。注文が完了すると、進行しなくなります。

これを行う「正しい」方法は、チェックアウト中にMagentoが起動するイベントの1つにオブザーバーを作成することです。の

checkout_onepage_controller_success_action

チェックアウトプロセスをあまりカスタマイズしていなければ、イベントで十分です。

the Wiki でこれを行う方法の簡潔な説明があります(別のイベントの場合)

イベントのセットアップと応答を取得したら、

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

入手できる情報の種類を確認します。おそらく、そこに注文IDがあり、目的のIDを取得できます。

4
Alan Storm

私は使用しなければなりませんでした...

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

Success.phtmlテンプレート内。 load()の代わりに、loadByIncrementIdを使用しました。その後、注文オブジェクトが空でなくなりました。

3
Bryce

管理モードの場合-これを試してください:

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

3
Matthias Kleine

getRealOrderId()は、データグリッドに表示される注文番号を返すようです。 getId()は、データベースの行の内部IDを返しますが、これはおそらく必要ありません。

2
Dominic

次のコードスニペットを使用して、増分IDを取得できます。

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

これで、$ Incrementid変数にエコーして、インクリメントIDを確認できます。

これがお役に立てば幸いです。

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