Search code examples
apimagentoproductstockcatalog

Magento API: Assigning preexisting simple products to configurable products


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.


Solution

  • 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 ) );                
    }