_getProductCollection()
クラスのメソッドにMage_Catalog_Block_Product_List
次のようにフィルターを1つ追加しました。
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不明な列 'e.type_id'が 'where句'にあり、クエリは次のとおりです:SELECT FLOOR((ROUND((e.min_price)* 1、2))/ 10)+ 1 AS
range
、 AS COUNT(*)count
FROMcatalog_product_index_price
ASe
INNER JOINは、catalog_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'(e
。type_id
IN( 'シンプル'を))AND(e.website_id = '1')AND(e.customer_group_id = 0)AND(e.min_price IS NOT NULL)GROUP BY FLOOR((ROUND((e.min_price)* 1、2))/ 10) + 1 ORDER BY FLOOR((ROUND((e.min_price)* 1、2))/ 10)+ 1 ASC