Szukaj…


Zdobądź produkt nadrzędny i ich dzieci.

Tutaj pokażę ci, jak pobrać

  1. Wszystkie elementy nadrzędne (produkty konfigurowalne)
  2. Produkt macierzysty i wszystkie jego dzieci.

Uzyskaj produkt nadrzędny.

Zaczniemy od stworzenia prostej klasy, która zdobędzie wszystkich naszych rodziców (produkty konfigurowalne)

<?php

namespace Test\Test\Controller\Test;

use Magento\Framework\App\Action\Context;


class Products extends \Magento\Framework\App\Action\Action
{

        public function __construct(
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $_product_res_fac
        )
        {
            $this->_product_res_fac = $_product_res_fac;
        }

        public function getParentProducts()
        {
            return $this->_product_res_fac->create()->addAttributeToSelect('*')->addAttributeToFilter('type_id', ['eq' => 'configurable']);
        }

    }

Jak widać powyżej, nasza funkcja getParentProducts zwróci teraz wszystkie konfigurowalne produkty, które aktualnie mamy w naszym systemie.

Uzyskaj produkty dla rodziców i dzieci.

Tutaj najpierw pobieramy nasz produkt nadrzędny, a my otrzymamy wszystkie produkty podrzędne, które ten rodzic ma.

<?php

namespace Test\Test\Controller\Test;

use Magento\Framework\App\Action\Context;


class Products extends \Magento\Framework\App\Action\Action
{

        public function __construct(
        \Magento\Catalog\Model\Product $productModel
        )
        {
            $this->product= $productModel;
        }

        public function getParentProduct()
        {
            return $this->product->load("a product entity id goes here")
        }

        public function getChildProducts()
        {
            $_children = $this->getParentProduct()->getTypeInstance()->getUsedProducts($this->getParentProduct());
        }

    }

Funkcja getChildProducts zwraca teraz kolekcję potomną, aby można było uruchomić ją przez pętlę foreach i uzyskać wszystkie atrybuty produktu, które mogą się na niej znajdować.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow