Was wäre die neueste bewährte Methode , um eine Bestellung mithilfe der Inkrement-ID (anstelle der Bestell- ID) mithilfe von OrderRepository zu laden ?
magento2
module
orders
magento-2.1
Frostshoxx
quelle
quelle
Antworten:
Magento 2 verwendet Serviceverträge zum Abrufen und Speichern von Objekten. In Magento wird diese Ebene von Repositories gebildet, die Manager mit
get()
undsave()
Methoden sind. Dadurch wird der Benutzercode von Model-Aufrufen ferngehalten. Rufen Sie Modellmethoden (wieload()
odersave()
oderloadByIncrementId()
) nicht direkt auf, sie werden veraltet, da benutzerdefinierter Code die Serviceverträge verwenden sollte. Verwenden Sie die API auch nicht in Magento, wie Khoa vorschlägt, da dies keinen Sinn ergibt. Die API dient zur Verbindung von Magento mit anderen Systemen.Injizieren Sie OrderRepository und SearchCriteriaBuilder in Ihren Konstruktor:
Und in Ihrer Funktion:
Offizieller Magento PHP Developer Guide auf magento.com
Code von Mulderea auf Github
quelle
$order = $orderList[0]
mit$order = $orderList->getFirstItem()
den ersten zu bekommen (und nur) Artikeln aus der Sammlung.$order = $orderList->getFirstItem(); $payment = $order->getPayment();
aber immer nichts$payment
Überprüfen Sie bitte mein Problem hier magento.stackexchange.com/questions/158935/...$order = $orderList['000000001'];
Soweit ich weiß, sollten wir verwenden
\Magento\Sales\Api\Data\OrderInterface
.Auftragsobjekt nach Inkrement-ID laden:
[EDIT] sollte es mit Serviceverträgen versuchen. Versuchen Sie Jaccos Antwort.
quelle
\Magento\Sales\Api\OrderRepositoryInterface
undget()
Methode