Magento 2: Получите соответствующие товары из идентификатора продукта, теперь показывающего название и цену


Ниже приведен мой код для получения связанных продуктов из идентификатора продуктов, он работает нормально, но не дает значений для названия и цены, он просто дает артикул и идентификатор

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($lastid);

    $relatedProducts = $product->getRelatedProducts();

    if (!empty($relatedProducts)) {
        echo 'Related Products <br />';   
        foreach ($relatedProducts as $relatedProduct) {
            echo $relatedProduct->getId().'-->'.$relatedProduct->getPrice().'-->'.$relatedProduct->getName().'-->'.$relatedProduct->getId(); //get name
            echo "<br>";
        }
    } 
Author: Kirti Nariya, 2018-10-14

2 answers

Может быть лучшее решение, но сейчас вам нужно загрузить продукт в цикл, который предоставит вам все данные продукта.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($lastid);

$relatedProducts = $product->getRelatedProducts();

//var_dump($relatedProducts);

if (!empty($relatedProducts)) {
    echo 'Related Products <br />';   
    foreach ($relatedProducts as $relatedProduct) {
        $_product = $objectManager->create('Magento\Catalog\Model\Product')->load($relatedProduct->getId());
        echo $relatedProduct->getId().'-->'.$_product->getPrice().'-->'.$_product->getName().'-->'.$relatedProduct->getId(); //get name
        echo "<br>";
    }
}  
 1
Author: Pawan, 2018-10-14 05:57:37

Вы можете (должны) избегать загрузки каждого продукта в цикл. Вы можете добавить нужные атрибуты в коллекцию, а затем использовать их в своем цикле.

$relatedProducts = $_product->getRelatedProductCollection()
                            ->addAttributeToSelect('color', 'name');

foreach ($relatedProducts as $relatedProduct) {
    // echo $relatedProduct->getSku();  
    echo $relatedProduct->getName(); //get name
    echo $relatedProduct->getData('color'); //or getColor()
    // echo print_r($relatedProduct->getData(), true); //Show all attributes      
}
 0
Author: karpa, 2018-10-29 00:27:18