2012-02-19 13 views
2

ストア/ウェブサイトに関係なく、すべての注文から特定の(カスタム)オプション値(フロントエンドの顧客が提供する)を持つすべての商品IDを検索したい。Magento - 特定のカスタムオプションを使用して注文商品を取得する

オプションは、テキストフィールド(Mage_Catalog_Model_Product_Option_Type_Text)、SKU(タイトル)test_optionで、私が探している値がです。

私は未処理のMySQLクエリでこれを行うことをお勧めしますが、Magentosモデル/コレクションを使用するソリューションは間違いありません。

+0

'sales_flat_order_item'テーブルで' product_options'フィールドが見つかりました。しかし、それはJSONエンコードされているように見えます。これは単純なMySQLクエリでフィルタリングするのを難しく(非効率的に)します。 – Vitamin

答えて

0

はコード

<?php $collection = Mage::getResourceModel('sales/order_collection'); 
$productIds = array(); 
foreach($collection as $order) { 
    $order = Mage::getModel('sales/order')->load($order->getId()); 
    $items = $order->getAllItems(); 
    foreach ($items as $item){ 
     $proOptions = $item->getProductOptions(); 
     if($proOptions['options']){ 
      $productIds[] = $item->getProductId(); 
     } 
    } 
} 
?> 

$ productIds変数を返す特定(カスタム)オプションの値を持つすべての製品ID以下にしてみてください。

あなたを助けてください!

0

ダイレクトSQLクエリでは、これを試すことができます。条件を入力したい場合は、要件に応じて追加することができます。

SELECT sfoi.product_id FROM sales_flat_order e 
LEFT JOIN 
sales_flat_order_item sfoi 
ON 
(e.entity_id = sfoi.order_id) 
関連する問題