Vildulv
2/20/2015 - 8:42 AM

Copy a Magento collection

Copy a Magento collection

$originalCollection = Mage::getModel('catalog/product')
    ->getCollection();
    
$newCollection = Mage::getModel('catalog/product')
    ->getCollection();

$selectParts = array(
    Varien_Db_Select::DISTINCT,
    Varien_Db_Select::COLUMNS,
    Varien_Db_Select::UNION,
    Varien_Db_Select::FROM,
    Varien_Db_Select::WHERE,
    Varien_Db_Select::GROUP,
    Varien_Db_Select::HAVING,
    Varien_Db_Select::ORDER,
    Varien_Db_Select::LIMIT_COUNT,
    Varien_Db_Select::LIMIT_OFFSET,
    Varien_Db_Select::FOR_UPDATE,
);

$originalSelect = $originalCollection->getSelect();
$newSelect = $newCollection->getSelect();
foreach ($selectParts as $part) {
    $newSelect->setPart(
        $part,
        $originalSelect->getPart($part)
    );
}