【问题标题】:Magento return a list of categories from a collectionMagento 从集合中返回类别列表
【发布时间】:2015-02-19 12:26:19
【问题描述】:

我已经编辑了这个问题,希望更有意义......

我们的商店有产品类型的类别,例如“前灯”“雾灯”等。

我为每种车辆品牌和型号创建了新类别,例如“Audi”>“Audi A3”。从这些子类别中,我将加载属于特定品牌和型号的产品集合,因此 make="audi" model ="a3"。

以下代码加载每个品牌和型号的产品集合。

<?php
// get current category name
$_catname = Mage::getSingleton('catalog/layer')->getCurrentCategory()->getName();
// Instantiate a category collection object
$_products = Mage::getModel('catalog/product')->getCollection();
// Select which fields to load into the category
// select fields to load
$_products->addAttributeToSelect('name');
$_products->addAttributeToSelect('sku');
$_products->addAttributeToSelect('model');
$_products->addAttributeToSelect('small_image');
$_products->addAttributeToFilter('model',$_catname);

// Load the collection
$_products->load();

foreach($_products as $product){
echo 'Name:'.$product->name.' sku:'.$product->sku.' Model:'.$product-    >model.;
}

?> 

这将打印我们商店中型号与类别名称相同的所有产品的列表。所以对于奥迪 A3,它返回一个带有 model="a3" 的产品列表

我想从这个集合中获取通过集合加载的每个产品所属的类别列表。

因此,这些产品可能存在于不同的类别中。例如,集合显示与“Audi A3”相关的所有产品。这可能包括头灯、雾灯和尾灯。所有 3 种产品都存在于各自的类别中,但正在加载到一个新类别“Audi A3”的集合中。

我想获得这些产品所在类别的列表。

也许这是不可能的,因为集合正在加载到一个新类别中,这是我不确定的。

【问题讨论】:

  • 你好,弗兰克,你能解释一下你想从产品集合中得到什么类型的结果吗?因为我无法得到你的问题?
  • 我想要一个集合中产品所属类别的列表。例如,集合将返回“audi a3”的产品。该系列包含前灯、尾灯等,它们都属于自己的类别。我想要返回的集合中存在的类别列表。

标签: php magento collections product


【解决方案1】:

希望你一切顺利。

获取特定类别的产品

$categoryIds = array(2,4);//category id

$collection = Mage::getModel('catalog/product')
                             ->getCollection()
                             ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
                             ->addAttributeToSelect('*')
                             ->addAttributeToFilter('category_id', array('in' => $categoryIds))

获取特定产品 ID 的产品

$productids = array(52,62);//product ids
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addFieldToFilter('entity_id',array( 'in' => $productids));

希望这会成为你的一天!

干杯!!! :P :)

【讨论】:

    【解决方案2】:

    您需要遍历集合并执行以下操作:

    $categories = array();
    foreach ($_products as $_product){
       $categoryIds = $_product->getCategoryIds();
       foreach ($categoryIds as $categoryId){
           $categories[]=$categoryId;
       }
    }
    $categoriesIds = array_unique($categories);
    

    我没有测试,但我相信它可以在没有或经过一些修改的情况下工作。

    【讨论】:

    • 再次返回值“array”。奇怪吗?
    • 如果您使用平面目录并且您在未重新索引的情况下添加了产品,则可能会发生这种情况。您还可以检查是否为产品和您运行该产品的商店设置了类别。如果您通过脚本导入您的产品,则它们可能只受到管理商店的影响......以及许多其他警告:) 随时评论或编辑您的原始帖子以提供更多信息。
    • 我已经编辑了我的原始帖子。希望能更好地解释我的问题。
    • 我不确定我是否真的了解您的问题或此类函数的返回值。如果你做 var_dump($categoriesIds);最后它返回一个空数组?
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多