Estoy intentando el siguiente código para obtener los ID de todos los productos simples que son hijos $collection
, lo que sé que es una colección de productos configurables.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
print_r($_children);
}
Sin embargo, todos los arreglos que obtengo están vacíos. ¿Estoy haciendo algo mal?
magento2
magento-2.0
simple-product
b_pcakes
fuente
fuente
$_children = $_product->getTypeInstance()->getUsedProducts($_product);
Vea si está obteniendo algo.getUsedProductCollection
Respuestas:
Puede imprimir sus identificadores de productos secundarios (de productos configurables) haciendo un pequeño cambio en su código de la siguiente manera
Después de esto, mire sus archivos de registro y tendrá su IDS de niño.
fuente
Las respuestas a esta pregunta son incorrectas. Aunque sus implementaciones podrían funcionar, no es la forma correcta de manejar esto. La forma correcta de hacerlo es mediante el uso de contratos de servicio y modelos de datos de Magentos.
En este caso, es el
Magento\ConfigurableProduct\Api\LinkManagementInterface
contrato de servicio que necesita.Un pequeño ejemplo de código que estoy usando en un comando de consola:
Magento 2 no es muy coherente con su propio código, ya que la mayoría del código está portado de Magento 1. Es por eso que todavía se ven restos de modelos basados en herencia y sus métodos (como
getTypeInstance()
). Si desea crear un código Magento 2 a prueba de futuro, use contratos de servicio y modelos de datos tanto como sea posible.fuente
Puedes llamar a continuación el método,
Arriba
$getChildId
muestra todos los identificadores de producto simples.fuente
Otra forma de lograr esto es usar el método getChildrenIds.
$ children = $ cProductTypeInstance-> getChildrenIds ($ this-> currentProductObj-> getId ());
fuente
Para obtener los objetos de producto hijo reales (no solo las cadenas de sus ID) use esto:
Para obtener sus ID u otras propiedades, use lo anterior con un bucle:
fuente