Поиск…


Получите родительский продукт и его детей.

Здесь я покажу вам, как получить

  1. Все родительские (конфигурируемые продукты)
  2. Родительский продукт и все его дети.

Получите родительский продукт.

Мы начнем с создания простого класса, который получит все наши родительские (настраиваемые продукты)

<?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']);
        }

    }

Как вы видите выше, наша функция getParentProducts теперь возвращает все настраиваемые продукты, которые мы имеем в нашей системе.

Получите родительские и дочерние продукты.

Здесь мы сначала получаем наш родительский продукт, и мы получим все дочерние продукты, которые есть у этого родителя.

<?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());
        }

    }

Функция getChildProducts теперь возвращает дочернюю коллекцию, поэтому вы сможете запустить ее через цикл foreach и получить все атрибуты продукта, которые могут быть на нем.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow