Если вы используете модуль очков и вознаграждений J2T (1)
В этом фрагменте будут перечислены все электронные письма рефералов, которые еще не зарегистрированы в качестве клиентов.
Я протестировал его на базе 28000 клиентов, и это очень быстро.
/* Retrieve all referrals emails */
$allReferrals = Mage::getModel('rewardpoints/referral')->getCollection();
foreach($allReferrals as $referral) {
$allReferralsEmails[] = $referral->getRewardpointsReferralEmail();
}
/* Retrieve all signed-up customers that are referrals */
$allReferralsCustomers = Mage::getResourceModel('customer/customer_collection')->addFieldToFilter('email', array('in'=>$allReferralsEmails));
foreach($allReferralsCustomers as $allReferralsCustomer) {
$allReferralsCustomerData = $allReferralsCustomer->getData();
$allReferralsCustomersEmails[] = $allReferralsCustomerData['email'];
}
/* Extract referrals that are not signed-up customers */
$notSignedUpReferralsEmails = array_diff($allReferralsEmails, $allReferralsCustomersEmails);
print_r($notSignedUpReferralsEmails);
(1) таблица rewardpoints_referral должна иметь такую структуру:
rewardpoints_referral_id int(11) UNSIGNED No auto_increment
rewardpoints_referral_parent_id int(11) UNSIGNED No
rewardpoints_referral_child_id int(11) UNSIGNED Yes NULL
rewardpoints_referral_email varchar(255) utf8_general_ci No
rewardpoints_referral_name varchar(255) utf8_general_ci Yes NULL
rewardpoints_referral_status tinyint(1) Yes 0