订单ID,订单增量ID混乱,我无法获得订单ID为20001201


28

我对订单ID订单增量ID感到有些困惑,那么谁能帮助我理解这两者之间的区别?

我有一个sales_order_place_after的观察者,我将销售详细信息存储在自定义表中。

但是随着

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

我得到的订单ID是普通ID,例如112或113或110等,而不是20001201

那么,真实的订单ID是20001201还是112?

我需要根据该订单ID进一步处理订单数据,我使用112、113等,并且可以正常工作,但是我需要对此进行澄清。

Answers:


23

区别在于:

  • order_id是内部Magento订单ID
  • 订单增量ID是您与客户交流的ID

您可以使用内部order_id轻松加载订单:

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

PS:如果需要,您可以轻松地从已加载的订单中获取增量ID:

$order->getIncrementId();

1
您是说开发人员使用内部ID和客户端,其他使用Increment_id?
查理

Marius在下面的Charlie的文章中区分了两者,并且mpaepper的响应实际上显示了在订单上调用的方法,以返回Increment ID(实际上是admin视图中的“订单ID”,并返回给客户)。
Joshua Chavanne 2015年

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


介意我的新问题,但是第一个字节不是EAV表中的前缀值而不是store_view_id吗?
someGuyOnTheWeb 2014年

4
@someGuyOnTheWeb。好吧...是的 从技术上讲,前缀(不仅是第一个字节...我在具有2位数前缀的项目中工作)都来自表eav_entity_store。但是对于第一顺序,该表中没有记录。这样就创建了一个。创建后,商店ID将存储为increment_prefix。看看它是如何工作的Mage_Eav_Model_Entity_Type::fetchNewIncrementId。从第:行开始 if (!$entityStoreConfig->getId()) {
马里斯(Marius)

5

一个销售订单包含两个值,entity_id(订单ID)和增量ID(订单增量ID)。实体ID是订单表上的主键。这意味着您可以使用它来加载实际的订单实体。见下文

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

并获得

$order->getId(); 要么 $order->getEntityId();

通常,increment_id是一个更友好的数字,通常是特定于网站/商店的,即20001201前面的2常常表示这是来自您第二个商店/网站的订单(不能记住哪个)。这通常称为真实订单ID。您可以使用此增量ID加载订单实体

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

并获得

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

0

order_id,我相信是一样的entity_id,是用于连接所有的EAV表一起sales_order表的主键。在magento内部使用。

order_increment_id 用于向客户展示

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.