OK、かなり単純なモジュールを実行していますが、解決できない製品コレクションの問題に遭遇しました。問題は次のとおりです。
1) 投稿された検索カテゴリに基づいて製品コレクションをロードします。
$products = Mage::getModel('catalog/product')
->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addAttributeToSelect('*')
->addAttributeToFilter('search_category', array('eq' => $data['search_category']));
2) このコレクションを基本関数で使用して、属性を取得します。
$section = $this->getSections($products);
3) 次のコードでは、別の値が投稿された場合に製品コレクションをさらに絞り込み、別の関数を実行します。
if($data['section'] != "")
{
$products->addAttributeToFilter('section', array('eq' => $data['section']));
$profile = $this->getProfiles($products);
echo count($products);
echo count($products->getIds());
}
基本的に、2 番目の機能に入る製品はフィルタリングされません。この段階で $products オブジェクトのカウントをエコーすると、フィルタリングされた金額ではなく、製品コレクションの元の金額が返されます。
$products->getIds() をエコーすると、正しいフィルタリングされたカウントが得られます。
なぜこれが機能しないのか本当に理解できません。コードを詳細にチェックしたところ、すべて正しいです。関数で製品コレクションを使用すると、それ以上フィルタリングできないようです。
フィルターを最初の関数の上に移動すると機能しますが、明らかに望ましい結果が得られます。
誰かがこれを説明できる場合は助けてください!