Идентификация Зарегистрированных Пользователей, Которые Никогда Не Совершали Покупки


Когда кто-то регистрируется на корпоративном сайте Magento (версия 1.13), где хранится эта информация? Это может быть в разделе "Подписчики на рассылку новостей" или "Клиенты", но этот список не обязательно будет включать всех, верно? Я пытаюсь создать список людей, которые зарегистрировались, но никогда не совершали покупки.

Author: Raphael at Digital Pianism, 2016-05-31

2 answers

У меня есть бесплатный модуль, который включает в себя аналогичный отчет

Разница в том, что в нем перечислены только те люди, которые подписались на рассылку новостей и никогда ее не покупали.

Я думаю, вы можете использовать это в качестве отправной точки.

Для получения такой коллекции я использую следующий код:

    // Get the customer emails
    $orderEmailsCollection = Mage::getModel('sales/order')->getCollection()->addAttributeToSelect('customer_email');

    // Call iterator walk method with collection query string and callback method as parameters
    // Has to be used to handle massive collection instead of foreach
    Mage::getSingleton('core/resource_iterator')->walk($orderEmailsCollection->getSelect(), array(array($this, 'fillArray')));

    $collection = Mage::getModel('newsletter/subscriber')->getCollection()
        ->addFieldToSelect(array('subscriber_id','subscriber_email','subscriber_status'))
        ->addFieldToFilter('subscriber_email',array('nin'=>$this->filterOrdersEmails));

Обратите внимание, что метод обратного вызова fillArray - это просто метод заполнения защищенного массива электронными письмами клиентов:

$this->filterOrdersEmails[] = $args['row']['customer_email'];
 0
Author: Raphael at Digital Pianism, 2016-05-31 18:01:11

Если это одноразовый процесс, возможно, проще всего просто использовать SQL-запрос, подобный этому:

SELECT
    user.entity_id, user.email
FROM customer_entity AS user
LEFT JOIN sales_flat_order AS ord
    ON ord.customer_id = user.entity_id
WHERE ord.entity_id IS NULL
GROUP BY user.entity_id;
 0
Author: Robbie Averill, 2016-06-01 02:40:13