API Orders filtern nach Attribut

Hallo zusammen,

ich habe eine kurze Frage zum Abrufen von Bestellungen per API.

Ich habe meinen Bestellungen ein zusätzliches Attribut “testattribut” hinzugefügt, welches auch wunderbar über die API für einzelne Bestellabrufe ausgegeben wird und ebenso per API befüllt werden kann. (im Beispiel mit dem WErt “testeintrag”)

Ich möchte dieses Attribut nun gerne verwenden um beim Get auf die Bestellungen zu filtern, welche nicht den Eintrag “testeintrag” in diesem Attribut haben. Folgenden API-URL-Aufruf habe ich dazu erstellt:

http://localhost/shopware/api/orders?filter[0][property]=attribute.testattribut&filter[0][expression]=≠&filter[0][value]=testeintrag

 

Leider wird mir das ganze quittiert mit folgender Fehlermeldung:

{
    “success”: false,
    “message”: “Errormesage: [Semantical Error] line 0, col 60 near ‘attribute.testattribut’: Error: ‘attribute’ is not defined.”
}

Es scheint als würde mit meinem URL-Aufruf direkt in der Tabelle s_order nach dem Attribut gesucht, in der es natürlich nicht existiert.

Lässt sich irgendwie ein Join auf die s_order_attributes per API-Abfrage realisieren?

 

Grüße

Jens

Hallo Jens,

ich glaube du musst entweder einen Hook oder ein Dispatch auf die getAction die zur order REST Api gehört machen und dort dann mittels deiner Filter eine SQL Abfrage gestalten.

Beste Grüße

Jens

ICh habe mir jetzt einfach eine eigene Ressource geschaffen, welche die Standard Order-Ressource nutzt aber dabei beim Listenabruf auf Orders den QueryBuilder der Einzelbestellungen (ohne Filter auf Id) nutzt.

Damit erhalte ich nun direk alle Bestellungen inkl. der Bestelldetails zurück und kann auf mein Attribut filtern.

 

Hier die Anpassung in der Order-Ressource dazu:

public function getList($offset = 0, $limit = 25, array $criteria = array(), array $orderBy = array())
     {
        $this->checkPrivilege(‘read’);

        //$builder = $this->getRepository()->createQueryBuilder(‘orders’);
        $builder = $this->getRepository()->getOrdersQueryBuilder();