下面的代码我正在尝试创建一个产品系列并对其进行过滤,但是,它并没有给我一个准确的产品数量,我不知道为什么。
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*')
->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
->addFieldToFilter(array(
array('attribute'=>'distributor','in'=>array(intval($distributor))),
))
->addAttributeToFilter('category_id', array(
array('finset' => strval($cat->getId())),
));
$count = $collection->getSize();
例如,我有一个包含该分销商过滤器的类别,该过滤器有大约30种产品,但上面代码中的计数显示为20.相同的另一个产品有3个产品,但该数量会带来2个。
更新:修正了我自己使用finset的问题。请参阅下面的答案
答案 0 :(得分:1)
尝试从此集合中获取您的查询代码,并直接在您的数据库上运行它。您可以检查查询是否正确。
试试这个:
$collection->getSelect()->__toString();
答案 1 :(得分:1)
回答了我自己的问题。用于分销商的finset,因为它是多选的。
$collection = Mage::getModel('catalog/product')->getCollection();
$dists = array(
array(
"finset" => array(intval($distributor))
),
);
$collection->addAttributeToSelect('*')
->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left outer')
->addAttributeToFilter("distributor", $dists)
->addAttributeToFilter('category_id', array(
array('finset' => $cat->getId()),
));
$collection->load();
$count = $collection->getSize();