获取购买此产品的用户(MAGENTO) [英] Get users who has bought this product (MAGENTO)

查看:38
本文介绍了获取购买此产品的用户(MAGENTO)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在magento中,是否可以根据用户购买的产品过滤用户? 例如.

Is it possible in magento to filter user based on the products they have bought? For eg.

如何获取所有从类别B购买产品A的用户

How can I get all the users who have bought product A from category B

类似于

SELECT用户从表用户中,表产品.....用户购买产品A的地方.

SELECT users From table users, table products ..... WHERE user has purchased product A .

请提出一些想法,我需要完成这项工作. 谢谢

Please give some ideas, I needed to make this work. Thanks

推荐答案

如果您想进行实际的查询,则可以做一些简单的事情(添加其他联接以从EAV获取客户信息):

If you want an actual query, you can probably do something as simple as (add additional joins to get customer information from EAV):

SELECT DISTINCT o.customer_id FROM sales_flat_order_item i
INNER JOIN sales_flat_order o ON o.entity_id = i.order_id
WHERE o.customer_id IS NOT NULL
AND i.sku = 'some-product-sku'

使用Magento模型,这应该对您有用:

Using Magento models, this should work for you:

<?php

require_once 'app/Mage.php';

/*
 * Initialize Magento. Older versions may require Mage::app() instead.
 */
Mage::init();

/**
 * Get all unique order IDs for items with a particular SKU.
 */
$orderItems = Mage::getResourceModel('sales/order_item_collection')
    ->addFieldToFilter('sku', 'some-product-sku')
    ->toArray(array('order_id'));

$orderIds = array_unique(array_map(
    function($orderItem) {
        return $orderItem['order_id'];
    },
    $orderItems['items']
));

/**
 * Now get all unique customers from the orders of these items.
 */
$orderCollection = Mage::getResourceModel('sales/order_collection')
    ->addFieldToFilter('entity_id',   array('in'  => $orderIds))
    ->addFieldToFilter('customer_id', array('neq' => 'NULL'));
$orderCollection->getSelect()->group('customer_id');

/**
 * Now get a customer collection for those customers.
 */
$customerCollection = Mage::getModel('customer/customer')->getCollection()
    ->addFieldToFilter('entity_id', array('in' => $orderCollection->getColumnValues('customer_id')));

/**
 * Traverse the customers like any other collection.
 */
foreach ($customerCollection as $customer) {
    var_dump($customer->getData());
}

这很丑陋(实例化多个模型,在后台执行一系列查询),您可能可以编写自己的模型以使其更加美观.

It's pretty ugly though (instantiates multiple models, executes a bunch of queries under the covers), you could probably write your own model to make this -a lot- prettier.

这篇关于获取购买此产品的用户(MAGENTO)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆