Kebingungan dengan id pesanan, id kenaikan pesanan dan saya tidak mendapatkan id pesanan sebagai 20001201

28

Saya agak bingung dengan id pesanan dan id kenaikan pesanan , Jadi bisakah ada yang membantu saya untuk memahami perbedaan antara keduanya?

Saya memiliki pengamat untuk sales_order_place_after tempat saya menyimpan detail penjualan di tabel khusus.

Tetapi dengan

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

Saya mendapatkan id pesanan seperti id normal seperti 112 atau 113 atau 110 dll, tidak seperti 20001201

Jadi yang merupakan id pesanan nyata, 20001201 atau 112?

Saya perlu memroses data pesanan lebih lanjut berdasarkan id pesanan ini, saya menggunakan 112, 113 dll. Dan berfungsi, tetapi saya perlu mengklarifikasi hal ini.

Charlie
sumber

Jawaban:

23

Perbedaannya adalah:

  • order_id adalah ID pesanan Magento internal
  • ID kenaikan pesanan adalah ID yang Anda komunikasikan dengan pelanggan Anda

Anda dapat dengan mudah memuat pesanan menggunakan pesanan_id internal:

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

PS: Jika Anda membutuhkannya, Anda dapat dengan mudah mendapatkan ID kenaikan dari pesanan yang dimuat:

$order->getIncrementId();
mpaepper
sumber
1
Maksud Anda Pengembang menggunakan ID internal dan klien dan penggunaan lainnya Increment_id?
Charlie
Charlie, posting Marius di bawah ini membedakan antara keduanya, dan respons mpaepper sebenarnya menunjukkan metode yang disebut pada perintah untuk mengembalikan ID Peningkatan (yang secara efektif adalah 'ID Pesanan' dalam tampilan admin dan ke pelanggan).
Joshua Chavanne
26

id= nilai sales_flat_orderkunci utama tabel. Ini ditambahkan otomatis untuk setiap pesanan yang Anda dapatkan di toko Anda. Biasanya dimulai dari 1 dan naik.

increment id= nomor "ramah pengguna" yang dihasilkan sebelum melakukan pemesanan. Itu harus unik dan digunakan oleh metode pembayaran online sebagai referensi (tetapi tidak hanya).
Id kenaikan secara default terlihat seperti ini.

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

Jumlah nol adalah variabel. Ini ditambahkan menggunakan str_padsehingga panjang id kenaikan tanpa id toko 8.

Marius
sumber
Pikirkan pertanyaan pemula saya, tetapi bukankah byte pertama nilai awalan dari tabel EAV dan bukan store_view_id?
someGuyOnTheWeb
4
@someGuyOnTheWeb. Yah ... ya tidak. Secara teknis awalan (bukan hanya byte pertama ... Saya telah mengerjakan proyek yang memiliki awalan 2 digit) berasal dari tabel eav_entity_store. Tetapi untuk urutan pertama tidak ada catatan dalam tabel itu. Jadi seseorang diciptakan. Ketika dibuat id toko disimpan sebagai increment_prefix. Lihat cara kerjanya dalam metode ini Mage_Eav_Model_Entity_Type::fetchNewIncrementId. Dimulai dengan baris: if (!$entityStoreConfig->getId()) {.
Marius
5

Pesanan penjualan menyimpan dua nilai, entity_id (Id Pesanan) dan increment_id (Id Peningkatan Pesanan). The entity_id adalah kunci utama pada tabel pesanan. Ini berarti Anda menggunakan ini untuk memuat entitas pesanan yang sebenarnya. Lihat di bawah

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

Dan dapatkan

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

The increment_id biasanya nomor yang lebih ramah yang sering situs web / toko tertentu yaitu 20001201 2 di depan akan sering berarti bahwa itu adalah pesanan dari toko / situs web kedua Anda (tidak ingat yang mana). Ini sering disebut sebagai id urutan nyata. Anda dapat memuat entitas pesanan menggunakan increment_id ini

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

Dan dapatkan

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

Itu order_id, yang saya percaya sama dengan entity_id, adalah kunci utama dalam tabel sales_order yang digunakan untuk menggabungkan semua tabel EAV bersama. Ini digunakan secara internal di magento.

order_increment_id digunakan untuk ditampilkan kepada pelanggan

TBI Infotech
sumber