【问题标题】:Magento - Retrieve order products with a specific custom optionMagento - 检索具有特定自定义选项的订单产品
【发布时间】:2012-02-19 12:45:25
【问题描述】:

我想从所有订单中检索具有特定(自定义)选项值(由客户在前端提供)的所有产品 ID - 无论商店/网站如何。

选项是一个文本字段 (Mage_Catalog_Model_Product_Option_Type_Text),SKU(和标题)是 test_option,我要查找的值是 green。 p>

我更喜欢使用原始 MySQL 查询来执行此操作,但使用 Magento 模型/集合的解决方案肯定就足够了。

【问题讨论】:

  • 我确实在sales_flat_order_item 表中找到了product_options 字段。然而,它似乎是 JSON 编码的,这使得使用简单的 MySQL 查询过滤掉变得困难(而且效率低下)。

标签: php mysql magento


【解决方案1】:

试试下面的代码

<?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。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    对于直接 sql 查询,你可以试试这个。如果你想设置一些条件,你可以根据你的要求添加。

    SELECT sfoi.product_id FROM sales_flat_order e 
    LEFT JOIN 
    sales_flat_order_item sfoi 
    ON 
    ( e.entity_id = sfoi.order_id )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 2014-11-15
      • 1970-01-01
      • 2013-08-13
      相关资源
      最近更新 更多