2010-03-24 73 views
2

我有一个自定义模块,用于在主页上显示精选产品。我将其设置为展示属于“精选”类别的产品。它工作正常在1.3,但是现在1.4我得到以下错误:按类别在Magento 1.4中筛选

SQLSTATE [42S22]:列未找到:1054未知列 'e.category_ids' 在 'where子句'

这里是我的代码:

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('visibility', $visibility) 
    ->addAttributeToFilter('category_ids',array('finset'=>$featuredcategory)) 
    $_productCollection->load(); 

特色类别由管理员指定。

任何任何想法可能是什么?

回答

2

只是为了澄清答案。你可以得到它首先定义精选类别的工作:

$_featcategory = Mage::getModel('catalog/category')->load($featuredcategory); 

,然后使用普通类别过滤器:

​​
+0

爵士可以澄清它更多..我试着第一次获得新产品............. ........................................ $ collection = Mage :: getModel('newproducts/newproducts') - > getNewproducts(); \t if($ catId){category_> getId($ catId){category-> getId ()){ $ collection-> addCategoryFilter($ category); } } ------------- ---------------- BUt这是行不通的。 – 2011-08-04 09:39:24

+0

对于获得新产品,我使用Mage :: getResourceModel('reports/product_collection'),然后添加一个订单以显示 - > setOrder('created_at','desc') – 2011-08-04 13:38:15

+0

是的,你是对的,但这不是我的意思。我的意思是如何按类别过滤产品收集,我使用上面的代码,但不工作。SOME时间我首先加载类别,然后使用addCategoryFilter(),但也不起作用。你有什么想法吗? – 2011-08-05 06:28:56

2

看起来像reports/product_collection模型不再有category_ids属性。

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*'); 
$_productCollection->load(); 
    foreach($_productCollection as $item) 
    { 
     var_dump(array_keys($item->getData())); 
     exit; 
    } 

你需要找到一个不同的模型来获取你需要的信息。

+0

感谢阿兰 - 把我关在正确的道路上。似乎我可以通过首先定义特色类别来实现它:** $ _ featcategory = Mage :: getModel('catalog/category') - > load($ featuredcategory); **然后使用普通的类别过滤器:* * - > addCategoryFilter($ _ featcategory)** - 但现在的问题是我不能按类别过滤两次,我需要为类别页面进行过滤(按当前类别和特色类别过滤。 - > addCategoryFilter($ _ category) - > addAttributeToFilter('category_ids',array('finset'=> $ featuredcategory))**关于这个的任何想法? – 2010-03-25 17:09:58

+0

长话短说?您使用过滤器方法获取一个组,如果你想要一个“来自两个”类别的情况,只需创建两个集合。更长的故事:我花了一点时间看着你正在使用的对象,而且我没有看到你想要的东西,没有看到一个明显的公共接口来做这件事。有一大堆复杂的逻辑正在进行(见met hod _applyProductLimitations)处理magento构建的各种产品和类别索引,以纯粹的ORM方式完成此操作是棘手的。 – 2010-03-25 21:54:03

+0

是啊,也许想抓住两个集合,并使用** if(stristr($ featuredcategory,$ currcategory)**类型语句来查找哪些产品在两个集合中。但要做到这一点,我需要同时拥有两个集合在一个逗号分隔列表我猜 - 任何想法如何输出一个集合作为sku的列表? – 2010-03-25 22:21:17