当前位置: 首页 > 面试题库 >

Magento:获取按属性过滤的产品集合的订单项集合

陶锋
2023-03-14
问题内容

我正在为Magento(1.6)商店开发类别汇总报告。

为此,我想获得一部分产品的“订单项”集合-这些产品的唯一类别ID(这是我创建的Magento产品属性)与特定值匹配。

我可以通过基于目录/产品的集合来获得相关的结果集。

$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('unique_category_id', '75')
->joinTable('sales/order_item', 'product_id=entity_id', array('price'=>'price','qty_ordered' => 'qty_ordered'));

Magento不喜欢它,因为有相同商品ID的重复条目。

如何根据订单项构建代码以获取此结果集?加入按属性过滤的产品集合使我难以理解。这段代码并不能解决问题,因为它假定属性位于“订单商品”上,而不是“产品”上。

$collection = Mage::getModel('sales/order_item')
->getCollection()
->join('catalog/product', 'entity_id=product_id')
->addAttributeToFilter('unique_category_id', '75');

任何帮助表示赞赏。


问题答案:

使跨实体选择干净有效地工作的唯一方法是通过使用集合选择对象构建SQL。

$attributeCode = 'unique_category_id';
$alias = $attributeCode.'_table';
$attribute = Mage::getSingleton('eav/config')
    ->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode);

$collection = Mage::getResourceModel('sales/order_item_collection');
$select = $collection->getSelect()->join(
    array($alias => $attribute->getBackendTable()),
    "main_table.product_id = $alias.entity_id AND $alias.attribute_id={$attribute->getId()}",
    array($attributeCode => 'value')
)
->where("$alias.value=?", 75);

这对我来说效果很好。由于性能原因,我倾向于跳过完整的连接eav_entity_type表的方法,然后是eav_attribute,然后是值表。由于attribute_id特定于实体,因此仅需这些。
根据属性的范围,您可能还需要添加商店ID。



 类似资料:
  • 问题内容: 我有这样的实体: 还有一个: 使用Criteria API,我想获得带有过滤的Picturs集的唯一AlbumD。我尝试这样的事情: 在这里,我得到了带有所有关联图片的相册。它们根本没有被过滤。当我尝试执行记录器打印的查询时,只有给定eventId的图片数量只有四行,但是在“相册”中,我获取了所有图片。 我也尝试了其他ResultTransformers,但最终得到了很多结果(4),但

  • 本文向大家介绍magento 通过SKU获取产品,包括了magento 通过SKU获取产品的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 在Laravel中,如果执行查询: ...然后,是模型对象的集合。(基本上是一系列模型。) 但是,此数组的键仅为: ...所以如果我想改变,比如说,为24的对象,我不能这样做: ...因为这只会改变数组中的第25个元素,而不是id为24的元素。 如何通过任何属性/列(例如但不限于id/Color/age/etc)从集合中获取单个(或多个)元素? 当然,我可以这样做: ...但是,那太恶心了。 当然

  • 本文向大家介绍magento 产品集-LIKE查询,包括了magento 产品集-LIKE查询的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 摘要 我想创建一个产品属性,该属性不保存到产品中,也不像普通产品属性一样显示在产品编辑页面上。相反,我希望将其保存到订单/报价项目中并显示在订单,发票等上。在将产品添加到购物车之前,客户还应该可以在前端对它进行配置。 细节 就像“ 自定义选项”一样 ,应将表单元素添加到前端产品页面。 与 自定义选项 不同 ,这不是 实际的 产品属性。它不应显示在管理产品页面或属性集上。 要求客户提供有