마 젠토 2 API : 확장 속성별로 주문 필터링


10

나는 할당 된 속성 확장이 order items전화를 warehouse.
" extension_attributes" 속성에서이 속성을 볼 수 있습니다 .
이 속성을 기준으로 주문을 필터링해야합니다. 이 작업을 수행하는 방법에 대한 문서를 찾을 수 없습니다.

API 응답 스 니펫 예제 :

[items] => Array(
    [0] => Array(
        [extension_attributes] => Array(
            [warehouse] => MyWarehouse
        )
    )
)

다음 필터는 내부 오류를 생성합니다.

searchCriteria[filter_groups][2][filters][0][field]=warehouse,searchCriteria[filter_groups][2][filters][0][value]=mywarehouse,searchCriteria[filter_groups][2][filters][0][condition_type]=eq

API? 를 통해 창고 속성을 사용하여 주문을 필터링하는 방법에 대한 제안 사항은 ?

-이 질문에 대한 추가 사항 :

이 경우 Fooman 블로그 를 따라 가면 extension * 속성으로 컬렉션을 필터링 할 수 있습니까?

  • 이 확장에 의한 수집 필터 속성 빠른 실행?
  • 이 확장 속성 테이블을 저장하기 위해 사용자 정의 db 테이블을 사용하면 어떻게 필터링 할 수 있습니까? 그것이 마 젠토 프론트 엔드와 백엔드에서도 작동해야합니다.
  • 수정이 필요한 위치와 추가해야 할 클래스 또는 참조 블로그는 어디에 있습니까?

좋은 점을 기다렸다가이 점에 대한 설명 / 간단한 답변을 원하십니까?


아무도 대답하지 않았다?
Bunyamin Inan

1
에 속성을 선언 했습니까 Module>/etc/extension_attributes.xml?
Thiago Lima

그렇습니다.
Amit Bera

2
당신은하지 않았다? 아마도 이것이 문제 일 것입니다.
Thiago Lima

답변:


4

당신은 이것을 시도 할 수 있습니다

/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=warehouse&searchCriteria[filter_groups][0][filters][0][value]=MyWarehouse&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

이것은 나의 대답이 주어지지 않았다 :(
Amit Bera

간단히 설명해주세요
Amit Bera

@ AmitBera 당신은 db의 해당 테이블에 속성을 저장하고 그에 따라 API를 호출해야합니다.
Vivek Kumar

@AmitBera API의 검색 기준에서 확장 속성 또는 확장 속성 사용에 대해 설명하도록 요청합니다
Agnes

API의 검색 기준에 대해 묻고 있습니다
Amit Bera

1

searchCriteria는 대신 db / collection 대신 API 응답의 결과를 필터링하지 않습니다. extension_attribute의 사용자 정의 속성을 db에서 데이터를 가져 오는 테이블의 열로 사용할 수없는 경우 응답하지 않습니다.

예를 들어. 다음 API 호출을합니다-

 http://example.com/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=random&searchCriteria[filter_groups][0][filters][0][value]=random&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

그런 다음 sales_order 테이블에 random이라는 열이 없으므로 (API에서 응답을 가져 오는) 다음 오류가 발생합니다.

SQLSTATE [42S22] : 열을 찾을 수 없음 : 1054 'where 절'에서 알 수없는 'random'열, 쿼리는 다음과 같습니다. SELECT main_table. * FROM sales_orderAS main_tableWHERE (( random= 'random'))

따라서 API에서 사용자 정의 데이터를 호출 해야하는 경우 새 테이블의 각 테이블에 저장해야합니다. 아래와 같이 열 이름을 적합 필드로 사용하고 값을 원하는 값으로 사용하여 정상적으로 호출 할 수 있습니다.

 http://example.com/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=column_name&searchCriteria[filter_groups][0][filters][0][value]=desired_value&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

나는 그것을 직접 테스트했으며, 당신도 같은 일을하기를 바랍니다.


1

이것을 쓰는 순간 (Magento 2.2), 나는 확장 속성을 필터링하는 방법이 없다고 생각합니다. 기본 수집에있어 존재가있어 그들이 비록 select당신이 정의하는 경우 <join>extension_attributes.xml당신이 그것을에 필터링 할 수 없습니다처럼 보인다.

확장 속성 값을 필터링하는 방법을 제공하는 것은 확장 개발자의 책임입니다. https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51 에서 Amazon 결제 모듈의 예를 확인할 수 있습니다.

해당 플러그인에서 테이블에 이미 조인 된 방법을 볼 수 있지만 (에서 정의 된대로 extension_attributes.xml) 필터를 수동으로 적용하십시오.


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