Confusione con ID ordine, ID incremento ordine e non ricevo ID ordine come 20001201


28

Sono un po 'confuso con l' ID ordine e l' ID incremento ordine , quindi qualcuno può aiutarmi a capire la differenza tra questi due?

Ho un osservatore per sales_order_place_after in cui memorizzo i dettagli delle vendite in una tabella personalizzata.

Ma con

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

Ottengo gli ID ordine come ID normali come 112 o 113 o 110 ecc. Non come 20001201

Quindi qual è l'ID ordine reale, 20001201 o 112?

Devo elaborare ulteriormente i dati dell'ordine in base a questo ID ordine, utilizzo 112, 113 ecc. E funziona, ma devo chiarire questo.

Risposte:


23

La differenza è:

  • order_id è l'ID ordine Magento interno
  • ID incremento ordine è l'ID che comunichi al tuo cliente

Puoi caricare facilmente un ordine utilizzando l'ID_ordine interno:

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

PS: se ne hai bisogno, puoi facilmente ottenere l'ID dell'incremento da un ordine caricato:

$order->getIncrementId();

1
Vuoi dire che lo sviluppatore usa ID interno e client e altri usano Increment_id?
Charlie,

Charlie, il post di Marius qui sotto fa una distinzione tra i due, e la risposta di mpaepper mostra in realtà il metodo che viene chiamato su un ordine per restituire l'ID Incremento (che è effettivamente l'ID ordine nella vista di amministrazione e nel cliente).
Joshua Chavanne,

26

id= il sales_flat_ordervalore della chiave primaria della tabella. Viene autoincrementato per ogni ordine che ricevi nel tuo negozio. Di solito inizia da 1 e sale.

increment id= un numero "user friendly" generato prima di effettuare l'ordine. Deve essere unico e viene utilizzato dai metodi di pagamento online come riferimento (ma non solo).
L'id di incremento per impostazione predefinita è simile al seguente.

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

Il numero di zeri è variabile. Viene aggiunto usando in str_padmodo che la lunghezza dell'ID di incremento senza l'ID negozio sia 8.


Ti dispiace la mia nuova domanda, ma il 1 ° byte non è un valore prefisso dalla tabella EAV e non store_view_id?
someGuyOnTheWeb

4
@someGuyOnTheWeb. Bene ... sì un no. Tecnicamente il prefisso (non solo il primo byte ... ho lavorato su progetti con prefisso a 2 cifre) proviene dalla tabella eav_entity_store. Ma per il primo ordine non ci sono record in quella tabella. Quindi ne viene creato uno. Quando viene creato, l'ID negozio viene archiviato come increment_prefix. Guarda come funziona nel metodo Mage_Eav_Model_Entity_Type::fetchNewIncrementId. A partire con la linea: if (!$entityStoreConfig->getId()) {.
Marius

5

Un ordine cliente contiene due valori, entity_id (ID ordine) e increment_id (ID incremento ordine). Entity_id è la chiave primaria nella tabella degli ordini. Ciò significa che lo usi per caricare l'entità effettiva dell'ordine. Vedi sotto

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

E cavalca

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

L'incremento_id è normalmente un numero più amichevole che è spesso specifico del sito Web / negozio, ad esempio 20001201 il 2 davanti spesso significa che è un ordine dal tuo secondo negozio / sito Web (non ricordo quale). Questo è spesso indicato come ID dell'ordine reale. Puoi caricare un'entità ordine usando questo increment_id

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

E cavalca

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

0

La order_id, che credo sia la stessa entity_id, è la chiave primaria nella tabella sales_order utilizzata per unire tutte le tabelle eav. È utilizzato internamente in magento.

order_increment_id viene utilizzato per la visualizzazione al cliente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.