質問

マルチストアセットアップでは、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サイトの総数と等しい場合、製品はそれらのすべてに割り当てられます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top