Nhầm lẫn với id đơn hàng, id tăng đơn hàng và tôi không nhận được id đơn hàng là 20001201


28

Tôi hơi bối rối với id đơn hàngid tăng đơn hàng , vậy có ai có thể giúp tôi hiểu sự khác biệt giữa hai thứ này không?

Tôi có một người quan sát cho sales_order_place_ sau khi tôi lưu trữ chi tiết bán hàng trong một bảng tùy chỉnh.

Nhưng vơi

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

Tôi nhận các id đơn hàng như các id bình thường như 112 hoặc 113 hoặc 110, v.v. không như 20001201

Vậy đâu là id thứ tự thực, 20001201 hay 112?

Tôi cần xử lý thêm dữ liệu đơn hàng dựa trên id đơn hàng này, tôi sử dụng 112, 113, v.v. và nó hoạt động, nhưng tôi cần làm rõ điều này.

Câu trả lời:


23

Sự khác biệt là:

  • order_id là ID đơn hàng Magento nội bộ
  • ID gia tăng đơn hàng là ID mà bạn giao tiếp với khách hàng của mình

Bạn có thể dễ dàng tải một đơn đặt hàng bằng cách sử dụng order_id nội bộ:

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

PS: Nếu bạn cần nó, bạn có thể dễ dàng lấy ID gia tăng từ một đơn hàng được tải:

$order->getIncrementId();

1
Bạn có nghĩa là Nhà phát triển sử dụng Id nội bộ và ứng dụng khách và sử dụng khác Increment_id?
Charlie

Bài đăng của Charlie, Marius dưới đây phân biệt giữa hai câu trả lời và phản hồi của mpaepper thực sự cho thấy phương thức được gọi theo yêu cầu trả lại ID tăng (có hiệu quả là 'ID đơn hàng' trong chế độ xem của quản trị viên và cho khách hàng).
Joshua Chavanne

26

id= sales_flat_ordergiá trị khóa chính của bảng. Điều này là tự động cho mỗi đơn hàng bạn nhận được trong cửa hàng của bạn. Nó thường bắt đầu từ 1 và đi lên.

increment id= số "thân thiện với người dùng" được tạo trước khi đặt hàng. Nó phải là duy nhất và nó được sử dụng bởi các phương thức thanh toán trực tuyến làm tài liệu tham khảo (nhưng không chỉ).
Id tăng theo mặc định trông như thế này.

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

Số lượng không thay đổi. Nó được thêm vào bằng cách sử dụng str_padđộ dài của id gia tăng mà không có id cửa hàng 8.


Hãy nhớ câu hỏi mới của tôi, nhưng không phải byte đầu tiên là giá trị tiền tố từ bảng EAV chứ không phải store_view_id?
someGuyOnTheWeb

4
@someGuyOnTheWeb. Chà ... vâng, không. Về mặt kỹ thuật, tiền tố (không chỉ byte đầu tiên ... Tôi đã làm việc với các dự án có tiền tố 2 chữ số) đến từ bảng eav_entity_store. Nhưng đối với đơn hàng đầu tiên không có hồ sơ trong bảng đó. Vì vậy, một trong những được tạo ra. Khi nó được tạo, id cửa hàng được lưu trữ dưới dạng increment_prefix. Xem cách nó hoạt động trong phương thức Mage_Eav_Model_Entity_Type::fetchNewIncrementId. Bắt đầu với dòng : if (!$entityStoreConfig->getId()) {.
Marius

5

Một đơn đặt hàng bán giữ hai giá trị, entity_id (Id đơn hàng) và gia tăng_id (Id tăng đơn hàng). Thực thể là khóa chính trên bảng đơn hàng. Điều này có nghĩa là bạn sử dụng điều này để tải thực thể đơn hàng thực tế. Xem bên dưới

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

Và nhận được bởi

$order->getId(); hoặc là $order->getEntityId();

Số gia thường là một số thân thiện hơn thường là trang web / cửa hàng cụ thể, ví dụ 20001201, số 2 ở phía trước thường có nghĩa là đó là một đơn đặt hàng từ cửa hàng / trang web thứ hai của bạn (không thể nhớ được). Điều này thường được gọi là id thứ tự thực sự. Bạn có thể tải một thực thể đơn hàng bằng cách sử dụng số tăng này

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

Và nhận được bởi

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

0

Cái order_idmà tôi tin là giống như entity_id, là khóa chính trong bảng sales_order được sử dụng để nối tất cả các bảng eav lại với nhau. Nó được sử dụng nội bộ trong magento.

order_increment_id được sử dụng để hiển thị cho khách hàng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.