Magento API: Assigning preexisting simple products to configurable products

keith picture keith · May 22, 2009 · Viewed 18.8k times · Source

I've got a client database with a large range of stock items, which are being uploaded to Magento as simple products.

Now I need to group them up and assign them to configurable products with their size and colour being their configurable attributes.

The Magento API has a Product_Link class, with a promising looking method: catalogue-product-link.assign (link), but I can't for the life of me figure out what arguments I need to make it work with configurable products, providing this is how assign was meant to be used.

Answer

Scimon Proctor picture Scimon Proctor · Aug 17, 2010

Well the notes here helped me get this running. So I thought I'd share with you the code to add a simple product to an existing Configurable Product.

This code assumes the simple product is a valid one to add, I'm not sure what would happen if it wasn't.

private function _attachProductToConfigurable( $_childProduct, $_configurableProduct ) {
   $loader = Mage::getResourceModel( 'catalog/product_type_configurable' )->load( $_configurableProduct );

   $ids = $_configurableProduct->getTypeInstance()->getUsedProductIds(); 
   $newids = array();
   foreach ( $ids as $id ) {
      $newids[$id] = 1;
   }

   $newids[$_childProduct->getId()] = 1;

   $loader->saveProducts( $_configurableProduct->getId(), array_keys( $newids ) );                
}