Saya memiliki ekstensi dengan atribut yang ditugaskan untuk order items
dipanggil warehouse
.
Saya dapat melihat atribut ini di bawah properti " extension_attributes
".
Saya perlu memfilter pesanan berdasarkan atribut ini. Saya tidak dapat menemukan dokumentasi tentang cara melakukan ini.
Cuplikan respons API contoh:
[items] => Array(
[0] => Array(
[extension_attributes] => Array(
[warehouse] => MyWarehouse
)
)
)
Filter berikut menghasilkan kesalahan internal:
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
Adakah saran tentang bagaimana saya bisa memfilter pesanan menggunakan atribut gudang melalui API
?
- Poin tambahan pada pertanyaan ini:
Dalam hal ini, jika kita akan mengikuti blog Fooman. Lalu bisakah kita memfilter koleksi dengan atribut ekstensi * ?
- Filter koleksi berdasarkan ekstensi ini. Atribut Harus dijalankan Cepat?
- Jika kita menggunakan tabel db khusus untuk menyimpan tabel atribut ekstensi ini, lalu bagaimana caranya memfilter? Haruskah itu berfungsi magento frontend dan backend juga.
- di mana membutuhkan modifikasi dan kelas mana yang perlu ditambahkan atau referensi blog?
Tunggu jawaban yang baik dan jelaskan / jelaskan tentang hal ini?
Module>/etc/extension_attributes.xml
?Jawaban:
Anda bisa mencoba ini
sumber
SearchCriteria tidak memfilter hasil dari respons API sebagai gantinya dari db / koleksi sebagai gantinya, jika atribut khusus dalam extension_attribute tidak tersedia di db sebagai kolom dalam tabel dari mana data diambil, itu tidak akan datang sebagai respons.
Untuk misalnya. Saya membuat panggilan API berikut -
Kemudian karena tidak ada kolom yang disebut acak di tabel sales_order (dari mana API mengambil respons), saya mendapatkan kesalahan berikut;
Jadi, jika Anda harus memanggil data khusus Anda di API, Anda harus menyimpan di tabel masing-masing dalam kolom baru, maka Anda dapat memanggilnya secara normal menggunakan nama kolom sebagai bidang fiter dan nilai sebagai nilai yang Anda inginkan, seperti di bawah ini;
Saya telah mengujinya sendiri, saya berharap hal yang sama juga berlaku untuk Anda.
sumber
Pada saat penulisan ini (Magento 2.2), saya tidak berpikir ada cara untuk memfilter pada atribut ekstensi. Meskipun mereka hadir dalam koleksi yang mendasari adalah
select
jika Anda menentukan<join>
diextension_attributes.xml
, tampaknya seperti Anda tidak bisa filter pada itu.Terserah pengembang ekstensi untuk menyediakan cara untuk memfilter nilai atribut ekstensi. Anda dapat melihat contoh di modul pembayaran Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51
Di plugin itu, Anda dapat melihat bagaimana mereka mengharapkan tabel sudah bergabung (seperti yang didefinisikan dalam
extension_attributes.xml
), tetapi menerapkan filter secara manual.sumber
@AmitBera Saya tidak yakin 100% untuk ini dan itu tidak memberikan semua pertanyaan jawaban Anda, tetapi saya pikir pertama Anda harus terlebih dahulu menggunakan JoinProcessor untuk mencari kriteria dan kemudian menggunakan filer. Anda dapat memeriksa lebih lanjut bagaimana melakukannya di http://devdocs.magento.com/guides/v2.2/extension-dev-guide/searching-with-repositories.html ini
sumber