Magento 2 API: Siparişleri uzantı özelliğine göre filtreleyin


10

order itemsAranan bir özniteliğe sahip bir uzantı var warehouse.
Bu özelliği " extension_attributes" özelliği altında görebiliyorum .
Bu özelliğe dayalı siparişleri filtrelemek gerekiyor. Bunun nasıl yapılacağı hakkında herhangi bir belge bulamıyorum.

Örnek API yanıtı snippet'i:

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

Aşağıdaki filtre dahili bir hata oluşturur:

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

Depo özelliğini kullanarak siparişleri nasıl filtreleyebileceğime dair herhangi bir öneri API?

- Bu sorudaki ek nokta:

Bu durumda, Fooman blogunu takip edersek , toplama * özelliğine göre filtreleyebilir miyiz ?

  • Bu uzantıya göre toplama filtresi Özellik Hızlı çalıştırılmalı mı?
  • Bu uzantı öznitelik tablosunu kaydetmek için özel db tablosu kullanırsak, nasıl filtreleyebiliriz? Ayrıca magento ön uç ve arka uç çalışması gerekir.
  • nerede değişiklik gerekiyor ve hangi sınıf veya herhangi bir referans blog eklemek gerekir?

İyi beklemek ve bu konuda kısa bir cevap / tarif?


Kimse cevaplamadı?
Bunyamin İnan

1
Özelliğinizi adresinde bildirdiniz Module>/etc/extension_attributes.xmlmi?
Thiago Lima

Evet dostum, ben yapmadım.
Amit Bera

2
Yaptın mı yapmadın mı? Belki de sorun budur.
Thiago Lima

Yanıtlar:


4

Bunu deneyebilirsin

/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

bu cevabımı vermiyor :(
Amit Bera

Lütfen kısaca açıklayın
Amit Bera

@AmitBera db karşılık gelen tabloda özniteliği kaydetmek ve buna göre API çağırmak zorunda, benim cevap kontrol edin.
Vivek Kumar

@AmitBera, uzantı özellikleri hakkında veya API'daki arama ölçütlerinde uzantı özelliklerini kullanma hakkında açıklama yapmamı istiyor
Agnes

API'daki arama ölçütlerini soruyorum
Amit Bera

2

SearchCriteria, db / collection yerine API yanıtından gelen sonuçları filtrelemez; bunun yerine, extension_attribute içindeki özel öznitelikler, db'de verilerin getirildiği tabloda bir sütun olarak kullanılamazsa yanıt gelmez.

Örneğin. Aşağıdaki API çağrısını yapıyorum -

 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

Sonra sales_order tablosunda (hangi API yanıt alıyor) rastgele adlı bir sütun olduğundan, aşağıdaki hatayı alıyorum;

Sqlstate [42S22]: Kolon bulunamadı: 1054 Bilinmeyen sütun içinde çok rastgele 'maddesi burada', sorgulama: SEC main_table. * DAN sales_orderAS main_tableWHERE (( random= 'rastgele'))

Dolayısıyla, API'daki özel verilerinizi çağırmanız gerekiyorsa, ilgili tabloya yeni bir sütunda kaydetmeniz gerekir, daha sonra aşağıdaki gibi fiter alanı olarak sütun adını ve istediğiniz değer olarak değeri kullanarak normal olarak çağırabilirsiniz;

 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

Bunu kendim test ettim, umarım sizin için de çalışır.


1

Bunu yazarken (Magento 2.2), uzantı özelliklerine filtre uygulamanın bir yolu olduğunu düşünmüyorum. Altta yatan koleksiyonunda ediyoruz hediyesi bu onlar olsa selectbir tanımlarsanız <join>içinde extension_attributes.xmlbunu filtre olamaz gibi görünüyor.

Bir uzantı özelliğinin değerlerini filtrelemek için bir yol sağlamak uzantı geliştiricisine bağlıdır. Amazon ödeme modülünde bir örnek görebilirsiniz: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51

Bu eklentide, tablonun nasıl önceden katılmasını beklediklerini (tanımlandığı gibi extension_attributes.xml) görebilir, ancak filtreyi manuel olarak uygulayabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.