注文ID、注文増分ID、および20001201として注文IDが得られないという混乱


28

私は注文ID注文増分IDと少し混同していますので、これらの2つの違いを理解するのに役立つ人はいますか?

sales_order_place_afterにオブザーバーがあり、カスタムテーブルに販売の詳細を格納しています。

しかし、

$orderId = $observer->getEvent()->getOrder()->getId();

注文IDを、20001201ではなく112または113または110などの通常のIDとして取得します。

実際の注文IDは20001201と112のどちらですか?

この注文IDに基づいて注文データをさらに処理する必要があり、112、113などを使用しますが、動作しますが、これを明確にする必要があります。

回答:


23

違いは:

  • order_idは内部Magento注文IDです
  • 注文増分IDは、顧客に伝えるIDです

内部のorder_idを使用して注文を簡単にロードできます。

Mage::getModel('sales/order')->load($orderId);

PS:必要な場合は、ロードされた注文から増分IDを簡単に取得できます。

$order->getIncrementId();

1
開発者は内部IDとクライアントを使用し、その他はIncrement_idを使用しますか?
チャーリー14

以下のチャーリー、マリウスの投稿はこの2つを区別しており、mpaepperの応答は実際に、増分ID(実際には管理ビューおよび顧客への「注文ID」である)を返す注文で呼び出されるメソッドを示しています。
ジョシュアシャヴァンヌ

26

id= sales_flat_orderテーブルの主キー値。これは、ショップで注文するたびに自動的に増加します。通常は1から始まり、上がります。

increment id=注文する前に生成された「ユーザーフレンドリーな」番号。一意である必要があり、オンライン支払い方法で参照として使用されます(ただし、それだけではありません)。
デフォルトでは、増分IDは次のようになります。

                  100000104
                  ||   || |
 store view id ---||   || |
                   |---||-|
                     |   |----- an increment number kept in the table eav_entity_store
    a lot of zeros --|

ゼロの数は可変です。を使用しstr_padて追加されるため、ストアIDのない増分IDの長さは8です。


私の初心者の質問に注意してください、しかし、1バイト目はstore_view_idではなく、EAVテーブルからのプレフィックス値ではありませんか?
someGuyOnTheWeb 14

4
@someGuyOnTheWeb。まあ...はいいいえ。技術的には、接頭辞(最初のバイトだけでなく...私は2桁の接頭辞を持つプロジェクトに取り組んできました)はtableから来ていますeav_entity_store。しかし、最初の注文の場合、そのテーブルにはレコードがありません。そのため、1つが作成されます。作成されると、ストアIDはとして保存されincrement_prefixます。メソッド内での動作を確認してくださいMage_Eav_Model_Entity_Type::fetchNewIncrementId。行で始まる: if (!$entityStoreConfig->getId()) {
マリウス

5

受注は、entity_id(注文ID)とincrement_id(注文増分ID)の2つの値を保持します。entity_idは、ordersテーブルの主キーです。つまり、これを使用して実際の注文エンティティをロードします。下記参照

Mage::getModel("sales/order")->load($enityId);

で取得します

$order->getId(); または $order->getEntityId();

increment_idは通常、よりわかりやすい番号で、多くの場合Webサイト/ストア固有です。つまり、20001201の前の2は、多くの場合、2番目のストア/ Webサイトからの注文であることを意味します(どちらが覚えているか)。多くの場合、これは実際の注文IDと呼ばれます。このincrement_idを使用して注文エンティティを読み込むことができます

Mage::getModel("sales/order")->loadByIncrementId($incrementId);

で取得します

$order->getRealOrderId(); or $order->getIncrementId();

0

order_id私は同じであると考えている、entity_id一緒にすべてのEAVのテーブルを結合するために使用さsales_orderテーブルの主キーです。magentoで内部的に使用されます。

order_increment_id 顧客への表示に使用されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.