Webサイトで製品をフィルタリングします
-
13-12-2019 - |
質問
マルチストアセットアップでは、WebサイトA と WebサイトBに割り当てられている製品を見つける必要があります。
製品コレクションにはaddWebsiteFilter()
メソッドがありますが、フィルタが適用されるMage_Catalog_Model_Resource_Product_Collection::_productLimitationJoinWebsite()
から見られるように、この目的は役立ちません。
$conditions[] = $this->getConnection()
->quoteInto('product_website.website_id IN(?)', $filters['website_ids']);
.
与えられたウェブサイトの に割り当てられているすべての製品についてクエリが一致します。複数のWebサイトに存在する製品のクエリを構築するための最良の方法は何ですか?
解決
それはそうです。与えられた$websiteIds
はWebサイトIDの配列です:
$productCollection = Mage::getResourceModel('catalog/product_collection');
$productCollection->addWebsiteFilter($websiteIds);
$productCollection->getSelect()
->having('COUNT(website_id) = ?', count($websiteIds))
->distinct(false)
->group('e.entity_id');
.
DISTINCT
を削除し、代わりに生成されたWebサイトの数を発生させることができます。フィルタリングされたWebサイトの総数と等しい場合、製品はそれらのすべてに割り当てられます。
所属していません magento.stackexchange