Ich versuche den folgenden Code, um die IDs aller einfachen Produkte zu erhalten, deren Kinder $collection
untergeordnet sind. Ich weiß, dass es sich um eine Sammlung konfigurierbarer Produkte handelt.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
print_r($_children);
}
Alle Arrays, die ich bekomme, sind jedoch leer. Mache ich etwas falsch?
magento2
magento-2.0
simple-product
b_pcakes
quelle
quelle
$_children = $_product->getTypeInstance()->getUsedProducts($_product);
Option. Sehen Sie, ob Sie etwas bekommen.getUsedProductCollection
Antworten:
Sie können die IDs Ihrer untergeordneten Produkte (konfigurierbarer Produkte) drucken, indem Sie wie folgt eine kleine Änderung an Ihrem Code vornehmen
Schauen Sie sich danach Ihre Protokolldateien an und Sie haben Ihr Kind IDS.
quelle
Die Antworten auf diese Frage sind falsch. Obwohl ihre Implementierungen möglicherweise funktionieren, ist dies nicht der richtige Weg, um damit umzugehen. Der richtige Weg, dies zu tun, ist die Verwendung der Serviceverträge und Datenmodelle von Magentos.
In diesem Fall ist es der
Magento\ConfigurableProduct\Api\LinkManagementInterface
Servicevertrag, den Sie benötigen.Ein kleines Beispiel für Code, den ich in einem Konsolenbefehl verwende:
Magento 2 ist nicht sehr konsistent mit seinem eigenen Code, da der Großteil des Codes von Magento 1 portiert wird. Deshalb sehen Sie immer noch Reste von vererbungsbasierten Modellen und deren Methoden (wie
getTypeInstance()
). Wenn Sie zukunftssicheren Magento 2-Code erstellen möchten, verwenden Sie so oft wie möglich Serviceverträge und Datenmodelle.quelle
Sie können einfach die folgende Methode aufrufen:
Oben werden
$getChildId
alle einfachen Produkt-IDs angezeigt.quelle
Verwenden Sie Folgendes, um die tatsächlichen untergeordneten Produktobjekte (nicht nur Zeichenfolgen ihrer IDs) abzurufen:
Verwenden Sie die obigen Anweisungen mit einer Schleife, um ihre IDs oder andere Eigenschaften abzurufen:
quelle
Eine andere Möglichkeit, dies zu erreichen, ist die Verwendung der Methode getChildrenIds.
$ children = $ cProductTypeInstance-> getChildrenIds ($ this-> currentProductObj-> getId ());
quelle