Suche nach einer Funktion

Hallo

 

Ich suche nach einem einfachen Methodenaufruf, um zu EINER orderID alle Informationen inkl.Postitionen (zzgl. ArtikelStammdaten), Thumbnail und Attribute etc zu erhalten.

 

Shopware()->Modules()->sOrder()->getOrderDetailsByOrderId( $orderID )

 

hi

Die liefert nicht all die Informationen wie oben beschrieben

 

trotzdem danke

du bekommst dort doch alle Artikelpositionen und brauchst dann nur noch Artikeldaten abfragen.

$order_details = Shopware()->Modules()->sOrder()->getOrderDetailsByOrderId( $orderID );
foreach( $order_details as &$detail )
{
     $detail['sArticle'] = Shopware()->Modules()->Articles()->sGetPromotionById('fix', 0, (string)$detail['articleordernumber']);
}

Sei aber vorsichtig damit. Aus alten Bestellung sind die Artikel ggf. gar nicht mehr vorhanden oder im schlimmsten Fall ein anderer Artikel einer alten Artikelnummer zugeordnet. Deshalb gibt es auch keine Funktion, die dir die kompletten Artikeldaten liefert. In den Bestellungen werden nur die wichtigsten Artikeldaten gespeichert.

Hi,

wie Alex schon beschrieben hat, sind die Infos in den Order-Tabellen theoretisch unabhängig von den Infos in den Artikel-Tabellen. Einfach weil man ja auch Artikel löschen könnte - und alte Bestellungen dann trotzdem noch gültig sein müssen. Der “beste” Weg wäre hier tatsächlich, die gewünschten Artikel-Infos zusätzlich als Attribut an die Bestell-Details zu überführen. Wenn es nur für dich ist und du Artikel nie löscht, sondern nur deaktivierst, ist es sicher auch in Ordnung, einfach die Artikel-Daten zu nehmen.

Aber Vorsicht: Statt über eine Liste von Produkten zu iterieren und jedes einzelnd zu laden, empfehlen wir dringend, die getList-Methode des ListProduct-Services zu nutzen:

/** @var ListProductService $productListService */
$productListService = $this->get('shopware_storefront.list_product_service');


/** @var ListProduct[] $products */
$products = $productListService->getList(['sw-555', 'sw-111'], $context);

Dadurch kann Shopware alle gewünschten Produktdaten mit einer konstanten Anzahl von Queries laden - das skaliert also mit O(1) statt mit O(x)

Besten Gruß,

Daniel 

1 „Gefällt mir“

Danke Euch. Ich schau es mir dieser Tage mal genauer an.