Saya sedang mengerjakan Perpanjangan Pembayaran M2, pedagang kami membutuhkan kami untuk mengirim detail barang bersama dengan pesanan
Semuanya berfungsi dengan baik tetapi $order->getAllItems();
atau $order->getAllVisibleItems();
mengembalikan produk induk yang sederhana dan dapat dikonfigurasi
jika saya memiliki 2 produk dalam Troli
- 1 Produk Sederhana
- 1 Terkait dengan produk yang dapat dikonfigurasi
jadi alih-alih mendapatkan dua produk, saya mendapatkan tiga; satu produk sederhana yang terkait dan produk induknya;
Saya dapat mencoba mengekstrak produk yang benar tetapi saya yakin pasti ada beberapa yang lain
/** @var \Magento\Sales\Model\Order $order */
$order = $payment->getOrder();
/**
* Get All Items of Products
*/
$productItems = $order->getAllItems() // returning 3 products where I have 2 in cart
$productItemsTest = $order->getAllVisibleItems(); // returning 3 products where I have 2 in cart
sumber
Cara terbaik untuk mendapatkan barang pesanan adalah menggunakan
$order->getAllVisibleItems()
Dijelaskan oleh fschmengler di atas,
getAllItems():
Fungsi ini mengembalikan array semua item keranjang dengan produk konfigurasi yang sederhana juga.Anda mendapatkan tiga produk karena Anda telah menggunakan
$order->getAllItems()
Anda harus menggunakan$order->getAllVisibleItems()
metode untuk mendapatkan produk asli.Anda dapat memeriksa lebih banyak referensi dari file
vendor/magento/module-quote/Model/Quote.php
sumber
Anda dapat menggunakan Item loop dan mengecualikan item anak dengan kode berikut:
sumber