Created
February 5, 2016 18:52
-
-
Save derak-kilgo/bad9943961092d5f014d to your computer and use it in GitHub Desktop.
Magento Loop through a collection (stand alone)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if(php_sapi_name()!=="cli"){ | |
echo "Must be run from the command line."; | |
}; | |
/** | |
* Setup a magento instance so we can run this export from the command line. | |
*/ | |
require_once('app/Mage.php'); | |
umask(0); | |
if (!Mage::isInstalled()) { | |
echo "Application is not installed yet, please complete install wizard first."; | |
exit; | |
} | |
// Only for urls // Don't remove this | |
$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']); | |
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']); | |
Mage::app('admin')->setUseSessionInUrl(false); | |
Mage::setIsDeveloperMode(true); ini_set('display_errors', 1); error_reporting(E_ALL); | |
try { | |
Mage::getConfig()->init(); | |
Mage::app(); | |
} catch (Exception $e) { | |
Mage::printException($e); | |
} | |
ini_set('memory_limit','500M'); | |
$customerCount = 0; | |
try{ | |
//configure the collection filters. | |
$collection = Mage::getResourceModel('customer/customer_collection') | |
->addAttributeToSelect('email') | |
->addAttributeToSelect('created_at') | |
->joinAttribute('billing_company', 'customer_address/company', 'default_billing', null, 'left') | |
->joinAttribute('billing_street', 'customer_address/street', 'default_billing', null, 'left') | |
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left') | |
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left') | |
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left') | |
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left') | |
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left'); | |
//Add a page size to the result set. | |
$collection->setPageSize(100); | |
//discover how many page the result will be. | |
$pages = $collection->getLastPageNumber(); | |
$currentPage = 1; | |
//This is the file to append the output to. | |
$fp = fopen('/tmp/customers.csv', 'w'); | |
do{ | |
//Tell the collection which page to load. | |
$collection->setCurPage($currentPage); | |
$collection->load(); | |
foreach ($collection as $customer){ | |
//write the collection array as a CSV. | |
$customerArray = $customer->toArray(); | |
//var_dump($customerArray); echo "\n\n"; | |
fputcsv($fp, $customerArray); | |
$customerCount++; | |
} | |
$currentPage++; | |
//make the collection unload the data in memory so it will pick up the next page when load() is called. | |
$collection->clear(); | |
} while ($currentPage <= $pages); | |
fclose($fp); | |
} catch (Exception $e) { | |
//$response['error'] = $e->getMessage(); | |
Mage::printException($e); | |
} | |
echo "Saved $customerCount customers to csv file \n"; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment