API Magento 2: filtra gli ordini per attributo di estensione


10

Ho un'estensione con un attributo assegnato a order itemschiamato warehouse.
Posso vedere questo attributo sotto la proprietà " extension_attributes".
Devo filtrare gli ordini in base a questo attributo. Non riesco a trovare alcuna documentazione su come eseguire questa operazione.

Esempio di snippet di risposta API:

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

Il seguente filtro genera un errore 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

Qualche suggerimento su come posso filtrare gli ordini usando l'attributo magazzino tramite API?

- Punto aggiuntivo su questa domanda:

In questo caso, se seguiremo il blog di Fooman. Quindi possiamo filtrare la raccolta in base all'attributo extension * ?

  • Filtro raccolta per questa estensione Attributo Dovrebbe essere eseguito velocemente?
  • Se utilizziamo una tabella db personalizzata per salvare questa tabella degli attributi di estensione, come possiamo filtrare? Dovrebbe funzionare magend frontend e backend anche.
  • dove è necessario apportare modifiche e quale classe è necessario aggiungere o qualsiasi blog di riferimento?

Aspettare il bene e descrivere / breve risposta su questi punti?


Nessuno ha risposto?
Bunyamin Inan,

1
Hai dichiarato il tuo attributo a Module>/etc/extension_attributes.xml?
Thiago Lima,

Sì, amico, non l'ho fatto.
Amit Bera

2
L'hai fatto o no? Forse questo è il problema.
Thiago Lima,

Risposte:


4

Puoi provare questo

/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

questa non è la mia risposta :(
Amit Bera

Per favore, spiega in breve
Amit Bera

@AmitBera devi salvare l'attributo nella corrispondente tabella di db e chiamare l'API di conseguenza, controlla la mia risposta.
Vivek Kumar,

@AmitBera mi stai chiedendo di spiegare gli attributi dell'estensione o sull'uso degli attributi dell'estensione nei criteri di ricerca nell'API
Agnes,

Sto chiedendo dei criteri di ricerca nell'API
Amit Bera

1

SearchCriteria non filtra invece i risultati dalla risposta API invece dal db / collection, se gli attributi personalizzati in extension_attribute non sono disponibili nel db come una colonna nella tabella da cui vengono recuperati i dati, non verrà fornita una risposta.

Per es. Faccio la seguente chiamata API:

 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

Quindi, poiché non esiste una colonna chiamata random nella tabella sales_order (da cui l'API sta recuperando la risposta), ottengo il seguente errore;

SQLSTATE [42S22]: Colonna non trovata: 1054 Colonna sconosciuta 'random' in 'where clausola', la query era: SELECT main_table. * FROM sales_orderAS main_tableWHERE (( random= 'random'))

Quindi, se devi chiamare i tuoi dati personalizzati nell'API devi salvare nella rispettiva tabella in una nuova colonna, quindi puoi chiamarli normalmente usando il nome della colonna come campo fiter e il valore come valore desiderato, come di seguito;

 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

L'ho provato io stesso, spero che lo stesso funzioni anche per te.


1

Al momento della stesura di questo (Magento 2.2), non penso che ci sia un modo per filtrare gli attributi di estensione. Sebbene siano presenti nelle raccolte sottostanti selectse si definisce un <join>in extension_attributes.xml, sembra che non sia possibile filtrarlo.

Spetta allo sviluppatore dell'estensione fornire un modo per filtrare i valori di un attributo di estensione. Puoi vedere un esempio nel modulo pagamenti Amazon: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51

In quel plugin, puoi vedere come si aspettano che la tabella sia già unita (come è definito in extension_attributes.xml), ma applica il filtro manualmente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.