2013-07-04 3 views
2

magento에 주문 가져 오기 커넥터 작업 중입니다. 성능을 향상시키기 위해 이전에로드되지 않은 주문 만로드하려고합니다. 이것은 문제가되지 않을 것입니다. 그냥 주문 ID를 저장하면됩니다. 그러나 변경 사항이있는 경우, 예를 들어 청구서 수신 주소가 자홍색 백엔드에서 변경되었거나 주문 상태가 다른 것으로 설정되어 있으면 인식되지 않습니다.Magento : 주문 값이 변경되었는지 확인하는 방법

내 아이디어는 "updated_at"열을 찾는 것이었고 Magento는 주문에 따라 변경 사항이있을 때마다 Magento가이 값을 업데이트 할 것을 기대했습니다. 주문 상태 또는 청구/배송 주소 인 경우 .

다행히도 updated_at 열이 있습니다. 예를 들어 청구서 수신 주소를 변경하면 새 날짜가 updated_at 열로 설정되지 않았습니다. 내 새 billing_name은 "sales_flat_order_grid"및 "sales_flat_order_address"테이블에서 "phpMyAdmin"을 통해 확인할 수 있습니다. 첫 번째에는 update_at 열 (실제 "업데이트 된 시간"이 아니라 이전 값도 포함)이 있으며 두 번째 열에는 updated_at 열이 없습니다.

전체 주문에 대해 "updated-at"열이 있습니까? Magento 이벤트, mysql 트리거 또는 책임있는 magento 클래스를 덮어 쓰는 것으로 비슷한 작업을 수행 할 수 있지만 표준 Magento 설치로 수행하는 것을 선호합니다.

감사합니다. :)

+0

'sales_flat_order.updated_at'을 확인하십시오. –

+0

이 필드를 보았지만 기존 주문을 편집 한 후에 값이 업데이트되지 않았습니다 .-( –

답변

1

isDirty()을 통해 모델을 확인할 것입니다. 이 방법이 Varien_Object에 있기 때문에 당신은 잘 가야한다.

행운을 빌어 요!

+0

고맙습니다! "isDirty"플래그를 설정하는 방법은 무엇입니까? 시도했지만 isDirty는 항상 "false"를 반환합니다. " –

+0

더러운 (변경) –

+0

흠, 불행히도 isDirty() 상태가 어떻게 작동하는지 모르겠다. 내 테스트 주문 (청구서 수신 주소 이름이 수동으로 변경되었습니다. 백엔드)는'isDirty = false'를 보여주고 있습니다 ... 변경 사항이 있다면 어떻게 인식 할 수 있습니까? 항상 "거짓"이 아닌가요? 설정할 수없는 경우, 어떻게하면 더 많은 변경 사항을 볼 수 있습니까? –

0

Varient_Object의 소스 코드를 확인한 결과 일부 속성을 설정할 때 자동으로 설정되지 않는 것 같습니다. 대신 명시 적으로 전화해야합니다 : flagDirty($field, $flag=true).

편집 : 불행히도 flagDirty() 메소드조차 작동하지 않습니다. _dirty 필드는 초기화되지 않습니다. 그것이 버그 인 것 같습니다.

그러나 대신 hasDataChanges()를 사용할 수 있습니다.

관련 문제