API Magento 2: Lọc đơn hàng theo thuộc tính mở rộng


10

Tôi có một phần mở rộng với một thuộc tính được gán cho order itemsđược gọi warehouse.
Tôi có thể thấy thuộc tính này dưới thuộc tính " extension_attributes".
Tôi cần lọc các đơn hàng dựa trên thuộc tính này. Tôi không thể tìm thấy bất kỳ tài liệu nào về cách làm điều này.

Đoạn mã phản hồi API ví dụ:

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

Bộ lọc sau đây tạo ra lỗi nội bộ:

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

Bất kỳ đề xuất nào về cách tôi có thể lọc các đơn đặt hàng bằng cách sử dụng thuộc tính kho thông qua API?

- Điểm bổ sung cho câu hỏi này:

Trong trường hợp này, nếu chúng tôi sẽ theo dõi blog Fooman. Sau đó, chúng tôi có thể lọc bộ sưu tập theo thuộc tính * không?

  • Bộ sưu tập bộ lọc bởi phần mở rộng này Thuộc tính Có nên chạy nhanh?
  • Nếu chúng ta sử dụng bảng db tùy chỉnh để lưu bảng thuộc tính mở rộng này thì làm sao có thể lọc? Nó nên hoạt động frontend magento và phụ trợ cũng.
  • Trường hợp cần sửa đổi và lớp nào cần thêm hoặc bất kỳ blog tham khảo nào?

Chờ cho tốt và mô tả / câu trả lời ngắn gọn về điểm này?


Không có ai trả lời?
Bunyamin Inan

1
Bạn đã khai báo thuộc tính của bạn tại Module>/etc/extension_attributes.xml?
Thiago Lima

Vâng, anh bạn, tôi đã không làm điều đó.
Amit Bera

2
Bạn đã làm hay chưa? Có lẽ đây là vấn đề.
Thiago Lima

Câu trả lời:


4

Bạn có thể thử cái này

/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

đây không phải là câu trả lời của tôi :(
Amit Bera

Vui lòng giải thích ngắn gọn
Amit Bera

@AmitBera bạn phải lưu thuộc tính trong bảng db tương ứng và gọi API tương ứng, kiểm tra câu trả lời của tôi.
Vivek Kumar

@AmitBera bạn đang yêu cầu tôi giải thích về các thuộc tính mở rộng hoặc về việc sử dụng các thuộc tính mở rộng trong tiêu chí tìm kiếm trong API
Agnes

Tôi đang hỏi về tiêu chí tìm kiếm trong API
Amit Bera

1

Thay vào đó, searchCriteria không lọc kết quả từ phản hồi API thay vào đó từ db / bộ sưu tập, nếu các thuộc tính tùy chỉnh trong extension_attribution không có sẵn trong db dưới dạng cột trong bảng nơi dữ liệu được tìm nạp, nó sẽ không phản hồi.

Ví dụ. Tôi thực hiện cuộc gọi API sau -

 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

Sau đó, vì không có cột nào được gọi là ngẫu nhiên trong bảng sales_order (từ đó API đang tìm nạp phản hồi), tôi gặp lỗi sau;

SQLSTATE [42S22]: Không tìm thấy cột: 1054 Cột không xác định 'ngẫu nhiên' trong 'mệnh đề where', truy vấn là: CHỌN main_table. * TỪ sales_orderNHƯ main_tableWHERE (( random= 'ngẫu nhiên'))

Vì vậy, nếu bạn phải gọi dữ liệu tùy chỉnh của mình trong API, bạn phải lưu trong bảng tương ứng trong một cột mới, thì bạn có thể gọi nó bình thường bằng cách sử dụng tên cột làm trường fiter và giá trị như giá trị mong muốn của bạn, như dưới đây;

 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

Tôi đã thử nghiệm bản thân mình, tôi hy vọng cũng làm việc cho bạn.


1

Tại thời điểm viết bài này (Magento 2.2), tôi không nghĩ có cách nào để lọc các thuộc tính mở rộng. Mặc dù họ đang có mặt trong bộ sưu tập cơ bản là selectnếu bạn định nghĩa một <join>trong extension_attributes.xml, nó có vẻ như bạn không thể lọc vào nó.

Tùy thuộc vào nhà phát triển tiện ích mở rộng để cung cấp cách lọc các giá trị của thuộc tính mở rộng. Bạn có thể xem một ví dụ trong mô-đun thanh toán của Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51

Trong plugin đó, bạn có thể thấy cách họ mong đợi bảng đã được tham gia (như được xác định trong extension_attributes.xml), nhưng áp dụng bộ lọc theo cách thủ cô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.