Плутанина з ідентифікатором замовлення, ідентифікатором збільшення замовлення, і я не отримую ідентифікатор замовлення як 20001201


28

Я трохи розгублений з ідентифікатором замовлення та ідентифікатором збільшення замовлення , тож чи може хтось допомогти мені зрозуміти різницю між цими двома?

У мене є спостерігач за sales_order_place_after, де я зберігаю реквізити продажів у спеціальній таблиці.

Але з

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

Я отримую ідентифікатори замовлення як звичайні ідентифікатори, як 112 або 113 або 110 тощо, не як 20001201

То який реальний ідентифікатор замовлення, 20001201 чи 112?

Мені потрібно додатково обробляти дані замовлення на основі цього ідентифікатора замовлення, я використовую 112, 113 і т.д., і це працює, але мені потрібно це уточнити.

Відповіді:


23

Різниця полягає в:

  • order_id - внутрішній ідентифікатор замовлення Magento
  • Ідентифікатор приросту замовлення - це ідентифікатор, який ви повідомляєте своєму клієнту

Ви можете легко завантажити замовлення, використовуючи внутрішній order_id:

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

PS: Якщо вам це потрібно, ви можете легко отримати ідентифікатор приросту з завантаженого замовлення:

$order->getIncrementId();

1
Ви маєте на увазі розробник використовує внутрішній ідентифікатор та клієнти та інший Increment_id?
Чарлі

Чарлі, Маріус внизу розрізняють обидва, і відповідь mpaepper насправді показує метод, який викликається наказом повернути Ідентифікатор збільшення (що фактично є "Ідентифікатор замовлення" в режимі перегляду адміністратора та в клієнта).
Джошуа Шаванна

26

id= значення sales_flat_orderпервинного ключа таблиці. Це збільшується автоматично для кожного замовлення, яке ви отримуєте у вашому магазині. Зазвичай починається з 1 і йде вгору.

increment id= "зручний для користувачів" номер, сформований до оформлення замовлення. Він повинен бути унікальним, і він використовується он-лайн способами оплати як довідковий (але не тільки).
Ідентифікатор приросту за замовчуванням виглядає приблизно так.

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

Кількість нулів є змінною. Він додається, використовуючи str_padтак, що довжина приросту ідентифікатора без ідентифікатора магазину становить 8.


Майте на увазі моє нове запитання, але чи не є значення 1-го байта префікса з таблиці EAV, а не store_view_id?
someGuyOnTheWeb

4
@someGuyOnTheWeb Ну ... так, ні. Технічно префікс (не лише перший байт ... Я працював над проектами, які мали двозначний префікс) надходить із таблиці eav_entity_store. Але для першого замовлення в цій таблиці немає записів. Так один створений. При його створенні ідентифікатор магазину зберігається як increment_prefix. Подивіться, як це працює в методі Mage_Eav_Model_Entity_Type::fetchNewIncrementId. Починаючи з лінії: if (!$entityStoreConfig->getId()) {.
Маріус

5

Замовлення на продаж містить два значення: entity_id (Id замовлення) та increment_id (Ідентифікатор збільшення замовлення). Суб'єкт_id - це первинний ключ таблиці таблиці замовлень. Це означає, що ви використовуєте це для завантаження фактичної сутності замовлення. Дивись нижче

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

І обійтись

$order->getId(); або $order->getEntityId();

Increment_id - це, як правило, більш дружній номер, який часто є специфічним для веб-сайту / магазину, тобто 20001201, 2 напроти, часто означатиме, що це замовлення з вашого другого магазину / веб-сайту (не можу згадати, який). Це часто називають справжнім ідентифікатором замовлення. Ви можете завантажити суб'єкт замовлення за допомогою цього increment_id

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

І обійтись

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

0

order_id, Який я вважаю , це так само , як entity_id, є первинним ключем в таблиці sales_order , використовуваної для з'єднання всіх таблиць EAV разом. Його використовують внутрішньо в магенто.

order_increment_id використовується для показу замовнику

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.