我_getProductCollection()
在类的方法中添加了一个过滤器,Mage_Catalog_Block_Product_List
如下所示。
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection->getSelect()->joinInner(
array('cpe' => 'catalog_product_entity'),
'e.entity_id = cpe.entity_id'
)
->where("cpe.type_id = 'simple'");
...
}
上面的代码从Magento 1.7版本开始运行良好。但是,每当我编写以下代码时,
找不到列:1054“ where子句”中的未知列“ e.type_id”
错误。
代码(不起作用)。
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
现在的问题。
- 如果使用第一个工作代码,会对性能产生影响吗?
- 还有其他方法可以解决这个问题吗?
更新:
每当我应用以下代码并使用rwd
主题时,都不会出现任何错误。但是每当我使用default
主题时,都会出现以下错误,
码
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
错误
SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ e.type_id”,查询为:SELECT FLOOR((ROUND((e.min_price)* 1,2))/ 10)+ 1 AS
range
, COUNT(*)AScount
FROMcatalog_product_index_price
ASe
INNER JOINcatalog_category_product_index
AScat_index
ON cat_index.product_id = e.entity_id AND cat_index.store_id = 1 AND cat_index.visibility IN(2,4)AND cat_index.category_id = '3' WHERE(e
。type_id
IN( '简单'的))AND(e.website_id ='1')AND(e.customer_group_id = 0)AND(e.min_price不为空)GROUP BY FLOOR((ROUND((e.min_price)* 1,2))/ 10) + 1按楼层排序((ROUND((e.min_price)* 1,2))/ 10)+ 1 ASC