Jestem trochę mylony z identyfikatorem zamówienia i identyfikatorem przyrostu zamówienia. Czy ktoś może mi pomóc zrozumieć różnicę między tymi dwoma?
Mam obserwatora dla Sales_order_place_after, gdzie przechowuję szczegóły sprzedaży w niestandardowej tabeli.
Ale z
$orderId = $observer->getEvent()->getOrder()->getId();
Dostaję identyfikatory zamówienia jako normalne identyfikatory, takie jak 112, 113 lub 110 itd., Nie jak 20001201
Więc jaki jest prawdziwy identyfikator zamówienia, 20001201 lub 112?
Muszę dalej przetwarzać dane zamówienia w oparciu o ten identyfikator zamówienia, używam 112, 113 itd. I to działa, ale muszę to wyjaśnić.
źródło
id
=sales_flat_order
wartość klucza podstawowego tabeli. Jest to automatycznie zwiększane dla każdego zamówienia, które otrzymasz w swoim sklepie. Zwykle zaczyna się od 1 i idzie w górę.increment id
= „przyjazny dla użytkownika” numer wygenerowany przed złożeniem zamówienia. Musi być unikalny i wykorzystywany przez internetowe metody płatności jako odniesienie (ale nie tylko).Identyfikator przyrostu domyślnie wygląda następująco.
Liczba zer jest zmienna. Jest dodawany za pomocą,
str_pad
aby długość identyfikatora przyrostu bez identyfikatora sklepu wynosiła8
.źródło
eav_entity_store
. Ale dla pierwszego rzędu nie ma rekordu w tej tabeli. Tak powstaje jeden. Po utworzeniu identyfikator sklepu jest zapisywany jakoincrement_prefix
. Zobacz, jak to działa w metodzieMage_Eav_Model_Entity_Type::fetchNewIncrementId
. Począwszy od linii:if (!$entityStoreConfig->getId()) {
.Zamówienie sprzedaży zawiera dwie wartości: identyfikator_ podmiotu (identyfikator zamówienia) i identyfikator_kwotowania (identyfikator przyrostu zamówienia). Identyfikator podmiotu jest kluczem podstawowym w tabeli zamówień. Oznacza to, że używasz tego do załadowania rzeczywistej jednostki zamówienia. Patrz poniżej
I przetrwaj
$order->getId();
lub$order->getEntityId();
Increment_id jest zwykle bardziej przyjaznym numerem, który często jest specyficzny dla strony internetowej / sklepu, tj. 20001201 2 z przodu często oznacza, że jest to zamówienie z drugiego sklepu / strony internetowej (nie pamiętam, które). Jest to często określane jako rzeczywisty identyfikator zamówienia. Możesz załadować jednostkę zamówienia za pomocą tego increment_id
I przetrwaj
źródło
Ten
order_id
, który moim zdaniem jest taki sam jakentity_id
, jest kluczem podstawowym w tabeli sales_order używanym do łączenia wszystkich tabel eav. Jest używany wewnętrznie w Magento.order_increment_id
służy do wyświetlania klientowiźródło