Verwechslung mit Bestell-ID, Bestell-Inkrement-ID und ich erhalte die Bestell-ID nicht als 20001201

28

Ich bin ein bisschen verwirrt mit der Bestell-ID und der Bestell-Inkrement-ID . Kann mir jemand helfen, den Unterschied zwischen diesen beiden zu verstehen?

Ich habe einen Beobachter für sales_order_place_after, in dem ich Verkaufsdetails in einer benutzerdefinierten Tabelle speichere.

Aber mit

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

Ich erhalte die Bestell-IDs als normale IDs wie 112 oder 113 oder 110 usw. nicht wie 20001201

Also, was ist die reale Bestellnummer, 20001201 oder 112?

Ich muss Bestelldaten basierend auf dieser Bestell-ID weiter verarbeiten, ich verwende 112, 113 usw. und es funktioniert, aber ich muss dies klären.

Charlie
quelle

Antworten:

23

Der Unterschied ist:

  • order_id ist die interne Magento-Bestell-ID
  • Bestellinkrement-ID ist die ID, die Sie Ihrem Kunden mitteilen

Sie können eine Bestellung einfach über die interne order_id laden:

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

PS: Wenn Sie es brauchen, können Sie die Inkrement-ID ganz einfach aus einer geladenen Bestellung abrufen:

$order->getIncrementId();
mpaepper
quelle
1
Du meinst Entwickler verwenden interne ID und Clients und andere verwenden Increment_id?
Charlie
Charlie, Marius 'Post unten, unterscheidet zwischen den beiden und die Antwort von mpaepper zeigt tatsächlich die Methode, die für eine Bestellung aufgerufen wird, um die Inkrement-ID zurückzugeben (die effektiv die' Bestell-ID 'in der Admin-Ansicht und in an den Kunden ist).
Joshua Chavanne
26

id= der sales_flat_orderTabellenprimärschlüsselwert. Dies wird für jede Bestellung, die Sie in Ihrem Shop erhalten, automatisch inkrementiert. Sie beginnt normalerweise bei 1 und steigt an.

increment id= eine "benutzerfreundliche" Nummer, die vor der Bestellung generiert wurde. Es muss eindeutig sein und wird von Online-Zahlungsmethoden als Referenz verwendet (aber nicht nur).
Die Inkrement-ID sieht standardmäßig so aus.

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

Die Anzahl der Nullen ist variabel. Es wird mit hinzugefügt, str_paddamit die Länge der Inkrement-ID ohne die Geschäfts-ID ist 8.

Marius
quelle
Beachten Sie meine neue Frage, aber ist das 1. Byte kein Präfixwert aus der EAV-Tabelle und keine store_view_id?
someGuyOnTheWeb
4
@someGuyOnTheWeb. Naja ... ja und nein. Technisch gesehen stammt das Präfix (nicht nur das erste Byte ... ich habe an Projekten mit einem zweistelligen Präfix gearbeitet) aus der Tabelle eav_entity_store. Bei der ersten Bestellung ist in dieser Tabelle jedoch kein Datensatz enthalten. So entsteht einer. Bei der Erstellung wird die Geschäfts-ID als gespeichert increment_prefix. Sehen Sie, wie es in der Methode funktioniert Mage_Eav_Model_Entity_Type::fetchNewIncrementId. Beginnend mit Zeile: if (!$entityStoreConfig->getId()) {.
Marius
5

Ein Kundenauftrag enthält zwei Werte, entity_id (Order Id) und increment_id (Order Increment Id). Die entity_id ist der Primärschlüssel in der Auftragstabelle. Dies bedeutet, dass Sie dies verwenden, um die tatsächliche Auftragsentität zu laden. Siehe unten

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

Und komm zurecht

$order->getId(); oder $order->getEntityId();

Die increment_id ist normalerweise eine freundlichere Nummer, die häufig website- / store-spezifisch ist, dh 20001201 Die 2 vor bedeutet häufig, dass es sich um eine Bestellung aus Ihrem zweiten Geschäft / Ihrer zweiten Website handelt (kann mich nicht erinnern, welche). Dies wird oft als die reale Bestellnummer bezeichnet. Mit dieser increment_id können Sie eine Auftragsentität laden

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

Und komm zurecht

$order->getRealOrderId(); or $order->getIncrementId();
Danny Dev Nz
quelle
0

Das order_id, von dem ich glaube, dass es dasselbe ist entity_id, ist der Primärschlüssel in der Tabelle sales_order, mit dem alle EAV-Tabellen zusammengefügt werden. Es wird intern in Magento verwendet.

order_increment_id wird zum Anzeigen an den Kunden verwendet

TBI Infotech
quelle