Magentoでは、購入した製品に基づいてユーザーをフィルタリングすることは可能ですか? たとえば、この製品を購入したユーザーを取得する(MAGENTO)
はどうやって取得することができ、カテゴリBから製品Aを購入したすべてのユーザー
mysqlのクエリユーザーは、製品Aを購入したテーブルのユーザー、テーブルの製品.....から
SELECTユーザーのように。
いくつかのアイデアを与えてください、私はこの作業をする必要がありました。 ありがとう
Magentoでは、購入した製品に基づいてユーザーをフィルタリングすることは可能ですか? たとえば、この製品を購入したユーザーを取得する(MAGENTO)
はどうやって取得することができ、カテゴリBから製品Aを購入したすべてのユーザー
mysqlのクエリユーザーは、製品Aを購入したテーブルのユーザー、テーブルの製品.....から
SELECTユーザーのように。
いくつかのアイデアを与えてください、私はこの作業をする必要がありました。 ありがとう
あなたが実際のクエリをしたい場合(EAVから顧客情報を取得するために参加する追加の追加)のような単純な何かを、あなたはおそらくすることができます
Magentoのモデルを使用して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'
を、これはあなたのために働く必要があります。
<?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());
}
複数のモデルをインスタンス化し、カバーの下で一連のクエリを実行するのはかなり醜いですが、おそらく独自のモデルを作成してこれをもっときれいにすることができます。
ご注文に基づいてクエリを実行する必要があります。カテゴリと製品 の間のリンクを取得するためにcatalog_category_product顧客と製品の間
幸運
が
$orders = Mage::getModel('sales/order')->addAttributeToSelect('*')->getCollection();
$order_items = Mage::getResourceModel('sales/order_item_collection')
->addAttributeToSelect('sku')
->addAttributeToSelect('created_at')
->addAttributeToSelect('order_id')
->addAttributeToFilter('order_id', array('in' => $orders_ids))->load();
おかげでたくさんこれらのモデルを試してみてください、私はそれを行うが、すべての作業に最適と思われるでしょう。そして、私はすべてのテーブルを見つけることができる任意のウェブサイトがあります。私はすべてのテーブルの役割が何であるかのように意味します。 – RIK