Ich habe eine Verlängerung mit einem Attribut zugewiesen order items
genannt warehouse
.
Ich kann dieses Attribut unter der Eigenschaft " extension_attributes
" sehen.
Ich muss Bestellungen basierend auf diesem Attribut filtern. Ich kann keine Dokumentation dazu finden.
Beispiel-API-Antwort-Snippet:
[items] => Array(
[0] => Array(
[extension_attributes] => Array(
[warehouse] => MyWarehouse
)
)
)
Der folgende Filter generiert einen internen Fehler:
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
Irgendwelche Vorschläge, wie ich Bestellungen mithilfe des Lagerattributs über das API
? Filtern kann .
- Zusätzlicher Punkt zu dieser Frage:
In diesem Fall, wenn wir dem Fooman-Blog folgen. Können wir dann die Sammlung nach dem Attribut extension * filtern ?
- Sammlungsfilter nach dieser Erweiterung Attribut Sollte schnell ausgeführt werden?
- Wenn wir eine benutzerdefinierte DB-Tabelle zum Speichern dieser Erweiterungsattributtabelle verwenden, wie kann dann gefiltert werden? Sollte es auch Magento Frontend und Backend funktionieren.
- Wo müssen Änderungen vorgenommen werden und welche Klasse muss hinzugefügt werden oder ein Referenzblog?
Warten Sie auf eine gute und beschreiben / kurze Antwort zu diesen Punkten?
Module>/etc/extension_attributes.xml
?Antworten:
Sie können dies versuchen
quelle
Die searchCriteria filtert stattdessen keine Ergebnisse aus der API-Antwort aus der Datenbank / Sammlung, wenn benutzerdefinierte Attribute in extension_attribute in der Datenbank nicht als Spalte in der Tabelle verfügbar sind, aus der die Daten abgerufen werden, werden sie nicht beantwortet.
Zum Beispiel. Ich mache folgenden API-Aufruf -
Da es in der Tabelle sales_order keine Spalte mit dem Namen random gibt (aus der die API die Antwort abruft), wird der folgende Fehler angezeigt.
Wenn Sie also Ihre benutzerdefinierten Daten in der API aufrufen müssen, müssen Sie sie in der entsprechenden Tabelle in einer neuen Spalte speichern. Sie können sie dann normal aufrufen, indem Sie den Spaltennamen als Fiter-Feld und den Wert als gewünschten Wert verwenden (siehe unten).
Ich habe es selbst getestet, ich hoffe, dass es auch für Sie funktioniert.
quelle
Im Moment des Schreibens (Magento 2.2) glaube ich nicht, dass es eine Möglichkeit gibt, nach Erweiterungsattributen zu filtern. Obwohl sie in den zugrunde liegenden Sammlungen vorhanden sind,
select
wenn Sie ein<join>
In definierenextension_attributes.xml
, können Sie anscheinend nicht danach filtern.Es ist Sache des Erweiterungsentwicklers, eine Möglichkeit zum Filtern nach Werten eines Erweiterungsattributs bereitzustellen. Ein Beispiel finden Sie im Amazon-Zahlungsmodul: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Plugin/CustomerCollection.php#L51
In diesem Plugin können Sie sehen, wie erwartet wird, dass die Tabelle bereits verbunden ist (wie in definiert
extension_attributes.xml
), aber den Filter manuell anwenden.quelle
@AmitBera Ich bin mir nicht 100% sicher, und es gibt nicht alle Fragen, aber ich denke, zuerst müssen Sie JoinProcessor verwenden, um Kriterien zu suchen, und dann Filer verwenden. Weitere Informationen hierzu finden Sie unter http://devdocs.magento.com/guides/v2.2/extension-dev-guide/searching-with-repositories.html
quelle