Jaka jest najnowsza najlepsza praktyka ładowania zamówienia przy użyciu identyfikatora przyrostu (zamiast identyfikatora zamówienia) przy użyciu OrderRepository
magento2
module
orders
magento-2.1
frostshoxx
źródło
źródło
Odpowiedzi:
Magento 2 wykorzystuje umowy serwisowe do wyszukiwania i zapisywania obiektów. W Magento warstwa ta jest tworzona przez Repozytoria, które są menedżerami
get()
isave()
metodami. To utrzymuje kod użytkownika z dala od wywołań modeli. Nie należy wywoływać metod modelowych (takich jakload()
lubsave()
lubloadByIncrementId()
) bezpośrednio, ponieważ są one przestarzałe, ponieważ niestandardowy kod powinien wykorzystywać umowy serwisowe. Nie używaj również API z Magento, jak sugeruje Khoa, to nie ma sensu. Interfejs API służy do łączenia Magento z innymi systemami.Wstrzykiwanie OrderRepository i SearchCriteriaBuilder w swoim konstruktorze:
I w twojej funkcji:
Oficjalny przewodnik programisty PHP Magento na magento.com
Kod Mulderea na github
źródło
$order = $orderList[0]
ją,$order = $orderList->getFirstItem()
aby uzyskać pierwszy (i jedyny) przedmiot z kolekcji.$order = $orderList->getFirstItem(); $payment = $order->getPayment();
Ale nic nie dostałem$payment
Proszę sprawdzić mój problem tutaj magento.stackexchange.com/questions/158935/…$order = $orderList['000000001'];
O ile mi wiadomo, powinniśmy użyć
\Magento\Sales\Api\Data\OrderInterface
.Załaduj obiekt zamówienia według identyfikatora przyrostu:
[EDYCJA] powinna spróbować z kontraktami serwisowymi. Spróbuj odpowiedzi Jacco.
źródło
\Magento\Sales\Api\OrderRepositoryInterface
i jegoget()
metoda