Mam rozszerzenie z przypisanym atrybutem o order items
nazwie warehouse
.
Widzę ten atrybut pod właściwością „ extension_attributes
”.
Muszę filtrować zamówienia na podstawie tego atrybutu. Nie mogę znaleźć żadnej dokumentacji, jak to zrobić.
Przykładowy fragment odpowiedzi interfejsu API:
[items] => Array(
[0] => Array(
[extension_attributes] => Array(
[warehouse] => MyWarehouse
)
)
)
Poniższy filtr generuje błąd wewnętrzny:
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
Wszelkie sugestie dotyczące tego, jak mogę filtrować zamówienia za pomocą atrybutu magazynowego za pośrednictwem API
?
- Dodatkowy punkt do tego pytania:
W takim przypadku, jeśli będziemy obserwować bloga Fooman. Czy możemy przefiltrować kolekcję według atrybutu rozszerzenia * ?
- Filtruj kolekcję według tego rozszerzenia Atrybut Czy należy uruchomić szybko?
- Jeśli używamy niestandardowej tabeli db do zapisania tej tabeli atrybutów rozszerzenia, to jak można filtrować? Powinno to działać również jako frontend i backend Magento.
- gdzie w razie potrzeby należy zmodyfikować i do której klasy dodać bloga?
Czekać na dobre i opisać / krótką odpowiedź na te pytania?
Module>/etc/extension_attributes.xml
?Odpowiedzi:
Możesz tego spróbować
źródło
SearchCriteria nie filtruje wyników z odpowiedzi API zamiast z db / collection, jeśli niestandardowe atrybuty w atrybucie extension_attribute nie są dostępne w db jako kolumna w tabeli, z której pobierane są dane, nie przyjdzie w odpowiedzi.
Na przykład Wykonuję następujące wywołanie interfejsu API -
Następnie, ponieważ w tabeli Sales_order nie ma kolumny o nazwie random (z której API pobiera odpowiedź), pojawia się następujący błąd;
Tak więc, jeśli musisz wywołać swoje niestandardowe dane w interfejsie API, musisz zapisać w odpowiedniej tabeli w nowej kolumnie, możesz normalnie wywołać ją, używając nazwy kolumny jako pola instalatora i wartości jako pożądanej wartości, jak poniżej;
Sam to przetestowałem, mam nadzieję, że to samo dla ciebie zadziała.
źródło
W chwili pisania tego (Magento 2.2) nie sądzę, aby istniał sposób filtrowania atrybutów rozszerzenia. Choć są one obecne w kolekcji bazowej jest
select
jeśli definiujemy<join>
wextension_attributes.xml
wydaje się, że nie można na nim filtr.Deweloper rozszerzenia musi zapewnić sposób filtrowania według wartości atrybutu rozszerzenia. Przykład możesz zobaczyć w module płatności Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51
W tej wtyczce możesz zobaczyć, jak oczekują, że tabela zostanie już dołączona (tak jak jest zdefiniowana
extension_attributes.xml
), ale zastosuj filtr ręcznie.źródło
@AmitBera Nie jestem tego w 100% pewien i nie daje to odpowiedzi na wszystkie pytania, ale myślę, że najpierw musisz użyć JoinProcessor do wyszukiwania kryteriów, a następnie użyć filtru. możesz dowiedzieć się więcej, jak to zrobić na tym http://devdocs.magento.com/guides/v2.2/extension-dev-guide/searching-with-repositories.html
źródło