Eu tenho uma extensão com um atributo atribuído a order items
chamado warehouse
.
Eu posso ver esse atributo na propriedade " extension_attributes
".
Preciso filtrar pedidos com base nesse atributo. Não consigo encontrar nenhuma documentação sobre como fazer isso.
Exemplo de fragmento de resposta da API:
[items] => Array(
[0] => Array(
[extension_attributes] => Array(
[warehouse] => MyWarehouse
)
)
)
O filtro a seguir gera um erro interno:
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
Alguma sugestão de como posso filtrar pedidos usando o atributo de armazém por meio do API
?
- Ponto adicional sobre esta questão:
Nesse caso, se seguirmos o blog da Fooman. Podemos filtrar a coleção pelo atributo extension * ?
- Filtro de coleção por esta extensão Atributo Deve ser executado rápido?
- Se usarmos a tabela db personalizada para salvar esta tabela de atributos de extensão, como filtrar? Deve funcionar magento front-end e back-end também.
- onde é necessário fazer modificações e qual classe precisa adicionar ou qualquer blog de referência?
Aguarde o melhor e descreva / breve resposta sobre esses pontos?
Module>/etc/extension_attributes.xml
?Respostas:
Você pode tentar isso
fonte
O searchCriteria não filtra os resultados da resposta da API em vez do db / collection, se os atributos customizados no extension_attribute não estiverem disponíveis no db como uma coluna na tabela na qual os dados estão sendo buscados, eles não receberão resposta.
Por exemplo. Eu faço a seguinte chamada da API -
Então, como não há coluna chamada aleatória na tabela sales_order (da qual a API está buscando resposta), recebo o seguinte erro;
Portanto, se você precisar chamar seus dados personalizados na API, precisará salvá-los na respectiva tabela em uma nova coluna, então poderá chamá-los normalmente usando o nome da coluna como o campo fiter e o valor como o valor desejado, como abaixo;
Eu testei eu mesmo, espero que o mesmo funcione para você também.
fonte
No momento em que escrevi isso (Magento 2.2), não acho que haja uma maneira de filtrar os atributos de extensão. Embora eles estão presentes na coleção subjacente é
select
se você definir uma<join>
noextension_attributes.xml
, parece que você não pode filtrar nele.Cabe ao desenvolvedor da extensão fornecer uma maneira de filtrar os valores de um atributo de extensão. Você pode ver um exemplo no módulo de pagamentos da Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51
Nesse plug-in, você pode ver como eles esperam que a tabela já esteja associada (como é definida em
extension_attributes.xml
), mas aplique o filtro manualmente.fonte
@AmitBera Não tenho 100% de certeza disso e não dá todas as respostas para todas as perguntas, mas acho que primeiro você precisa primeiro usar o JoinProcessor para pesquisar critérios e depois usar o arquivador. você pode conferir mais como fazê-lo neste http://devdocs.magento.com/guides/v2.2/extension-dev-guide/searching-with-repositories.html
fonte