Bagaimana cara mendapatkan Tier Price dari produk magento2?

11

Bagaimana cara mendapatkan tingkat harga produk di Magento 2 dengan kode khusus?

Ini kode saya

 public function getProductCollection()
    {
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
         $collection->setOrder('created_at', 'DESC');
        // $collection->setPageSize(3); // fetching only 3 products
        return $collection;
    }

dan fungsi panggilan saya di .phtml

  $productCollection = $block->getProductCollection();
   $productCollection->setPageSize(2);
            foreach ($productCollection as $product) {

 echo $product->getName();
 print_r($product->getTierPrice());

gema getName, getPrice, getHarga spesial bekerja

tetapi getTierPrice tidak berfungsi.

ex. Saya memiliki kartu anggota VIP (customer_group) Saya ingin menunjukkan tingkat harga kartu anggota VIP kepada publik tidak mengatur semua grup Saya ingin menunjukkan harga kartu anggota VIP

tttk
sumber

Jawaban:

6

Anda bisa mendapatkan TierPrice seperti di bawah ini.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1);                
$tier_price = $product_obj->getTierPrice();
if(count($tier_price) > 0){
    foreach($tier_price as $pirces){
        foreach ( array_reverse($pirces) as $k => $v ) {
            if($k == "price"){
                $tp = number_format($v, 2, '.', '');
                echo $tp;
            }
        }
    }
}

$product_objpunya data produk, silakan cek atau debut, kamu bisa tahu Ini akan bekerja 100%. lihat gambar log saya di bawah ini.

masukkan deskripsi gambar di sini

Buat konstruktor di kelas Anda dan mulai objek kelas. Dari Objek itu Anda dapat melakukan hal-hal.

Bojjaiah
sumber
itu halaman kosong ketika saya menjalankan kode Anda tidak echo tier price
tttk
@tttk lihat jawaban saya yang diperbarui.
Bojjaiah
maaf pak, apakah Anda memiliki kode lengkap untuk echo tier_price? di sini kode saya foreach ($ tier_price as $ pirces) {echo $ prirces ["price"]; // dapatkan masing-masing}
tttk
@tttk sekarang coba kode saya.
Bojjaiah
apa itu array_reverse ($ tier)? Variabel $ tier?
tttk
7

Untuk mendapatkan harga tingkat untuk grup pelanggan, gunakan getTierPrices () alih-alih getTierPrice () . Silakan lihat kode contoh di bawah ini:

<?php
use \Magento\Framework\App\Bootstrap;
include('/www/magento2.1/app/bootstrap.php');

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('frontend');

$productId = 1;
$product_obj = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);

getAnyGroup($product_obj);

function getAnyGroup($product_obj) {
    $tier_price = $product_obj->getTierPrices();

    if(count($tier_price) > 0){
        echo "price_qty\tprice\tCustomerGroupId\n";

        foreach($tier_price as $price){
            echo $price->getQty();
            echo "\t";
            echo $price->getValue();
            echo "\t";
            echo $price->getCustomerGroupId();
            echo "\t";
            echo "\n";
            print_r($price->getData());
            echo "\t";
            echo "\n";
        }
    }
}
Jun Xie
sumber
Bekerja untuk saya di Obsever
Ankit Shah
cara mendapatkan semua produk dengan harga lapis. Saya ingin menunjukkan semua harga produk hv di halaman berbeda
Daniel_12
@ Daniel_12, bisakah kita mendapatkan harga produk menggunakan id grup pelanggan?
jafar pinjar
0

kode dari Bojjaiah berfungsi tetapi ini menunjukkan harga tier seperti ini: "2.252.132.001.888". Bagaimana saya bisa mengatakannya seperti ini: Beli 1 seharga 2,52 / Beli 2 seharga 2,13 / Beli 3 seharga 2,00 / Beli 4 seharga 1,88? Terima kasih!

Ini adalah kode asli dari Bojjaiah:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1); $tier_price = $product_obj->getTierPrice();if(count($tier_price) > 0){
foreach($tier_price as $pirces){
    foreach ( array_reverse($pirces) as $k => $v ) {
        if($k == "price"){
            $tp = number_format($v, 2, '.', '');
            echo $tp;
        }
Anton Ulrich
sumber