주문 ID, 주문 증분 ID와 혼동되며 주문 ID가 20001201로 표시되지 않습니다.


28

주문 ID주문 증분 ID 와 약간 혼동되어 있으므로 둘 중 차이점을 이해하는 데 도움이 될 수 있습니까?

sales_order_place_after에 대한 관찰자 가 있는데 사용자 지정 테이블에 판매 세부 정보를 저장합니다.

하지만 함께

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

주문 ID는 20001201이 아닌 112 또는 113 또는 110 등의 일반 ID로 얻습니다.

그렇다면 실제 주문 ID는 20001201 또는 112입니까?

이 주문 ID를 기반으로 주문 데이터를 추가로 처리해야하며 112, 113 등을 사용하며 작동하지만이를 명확히해야합니다.

답변:


23

차이점은 다음과 같습니다.

  • order_id는 내부 마 젠토 주문 ID입니다.
  • 주문 증분 ID는 고객과 통신하는 ID입니다.

내부 order_id를 사용하여 쉽게 주문을로드 할 수 있습니다.

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

PS : 필요한 경우로드 된 주문에서 증분 ID를 쉽게 얻을 수 있습니다.

$order->getIncrementId();

1
개발자가 내부 ID 및 클라이언트를 사용하고 다른 용도로 Increment_id를 사용한다는 의미입니까?
Charlie

아래의 Marius의 게시물 인 Charlie는 두 가지를 구별하고 mpaepper의 응답은 실제로 증분 ID를 반환하기 위해 호출 된 방법 (관리자보기 및 고객의 '주문 ID'임)을 실제로 보여줍니다.
Joshua Chavanne

26

id= sales_flat_order테이블 기본 키 값 상점에서 주문할 때마다 자동 증분됩니다. 일반적으로 1에서 시작하여 올라갑니다.

increment id= 주문하기 전에 생성 된 "사용자 친화적"번호입니다. 고유해야하며 온라인 결제 방법에서 참조 용으로 만 사용됩니다 (단,뿐만 아니라).
기본적으로 증가 ID는 다음과 같습니다.

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

0의 개수는 가변적입니다. str_pad상점 ID가없는 증분 ID의 길이가되도록 사용하여 추가됩니다 8.


내 새로운 질문을 염두에 두지 만 1 바이트는 EAV 테이블의 접두사 값이 아니며 store_view_id가 아닌가?
someGuyOnTheWeb

4
@someGuyOnTheWeb. 글쎄요 ... 아니요 기술적으로 접두사 (첫 번째 바이트뿐만 아니라 2 자리 접두사가있는 프로젝트에서 작업했습니다)는 표에서 나옵니다 eav_entity_store. 그러나 첫 번째 주문의 경우 해당 테이블에 레코드가 없습니다. 그래서 하나가 만들어집니다. 상점 ID가 작성되면로 저장됩니다 increment_prefix. 메소드에서 어떻게 작동하는지보십시오 Mage_Eav_Model_Entity_Type::fetchNewIncrementId. 라인으로 시작 : if (!$entityStoreConfig->getId()) {.
Marius

5

판매 주문에는 entity_id (주문 ID) 및 increment_id (주문 증분 ID)의 두 값이 있습니다. entity_id는 orders 테이블의 기본 키입니다. 즉,이를 사용하여 실제 주문 엔터티를로드합니다. 아래 참조

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

그리고

$order->getId(); 또는 $order->getEntityId();

increment_id는 일반적으로 웹 사이트 / 상점에 따라 더 친숙한 숫자입니다. 예를 들어 20001201 앞에있는 2는 종종 두 번째 상점 / 웹 사이트에서 주문한 것을 의미합니다 (어떤 것을 기억할 수 없음). 이것을 종종 실제 주문 ID라고합니다. 이 increment_id를 사용하여 주문 엔터티를로드 할 수 있습니다

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

그리고

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

0

order_id난과 동일 믿는는 entity_id함께 모든 EAV의 테이블을 조인하는 데 사용되는 SALES_ORDER 테이블의 기본 키입니다. 내부적으로 magento에서 사용됩니다.

order_increment_id 고객에게 표시하는 데 사용됩니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.