Estou tentando o código a seguir para obter os IDs de todos os produtos simples que são filhos de $collection
, que sei ser uma coleção de produtos configuráveis.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
print_r($_children);
}
No entanto, todas as matrizes que estou recebendo estão vazias. Estou fazendo algo errado?
magento2
magento-2.0
simple-product
b_pcakes
fonte
fonte
$_children = $_product->getTypeInstance()->getUsedProducts($_product);
Veja se você está recebendo alguma coisa.getUsedProductCollection
Respostas:
Você pode imprimir os IDs dos seus produtos filhos (de produtos configuráveis) fazendo uma pequena alteração no seu código da seguinte maneira
Depois disso, verifique os arquivos de log e você terá o IDS filho.
fonte
As respostas para esta pergunta estão erradas. Embora suas implementações possam funcionar, não é a maneira correta de lidar com isso. A maneira correta de fazer isso é usando os contratos de serviço e modelos de dados do Magentos.
Nesse caso, é o
Magento\ConfigurableProduct\Api\LinkManagementInterface
contrato de serviço que você precisa.Um pequeno exemplo de código que estou usando em um comando do console:
O Magento 2 não é muito consistente com seu próprio código, já que a maioria do código é portada do Magento 1. É por isso que você ainda vê sobras de modelos baseados em herança e seus métodos (como
getTypeInstance()
). Se você deseja criar um código Magento 2 à prova de futuro, use contratos de serviço e modelos de dados o máximo possível.fonte
Você pode simplesmente chamar o método abaixo,
Acima,
$getChildId
mostre todos os IDs simples do produto.fonte
Outra maneira de conseguir isso é usar o método getChildrenIds.
$ children = $ cProductTypeInstance-> getChildrenIds ($ this-> currentProductObj-> getId ());
fonte
Para obter os objetos do produto filho reais (não apenas as cadeias de caracteres de seus IDs), use este:
Para obter seus IDs ou outras propriedades, use o acima com um loop:
fonte