本文整理汇总了PHP中Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection::unsProductCountSelect方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection::unsProductCountSelect方法的具体用法?PHP Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection::unsProductCountSelect怎么用?PHP Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection::unsProductCountSelect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection
的用法示例。
在下文中一共展示了Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection::unsProductCountSelect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addCountToCategories
/**
* @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $productCollection
* @param $categoryCollection
* @param bool $inCurrentCategory
* @return $this
*/
public function addCountToCategories($productCollection, $categoryCollection, $inCurrentCategory = false)
{
Mana_Core_Profiler2::start(__METHOD__);
$isAnchor = array();
$isNotAnchor = array();
foreach ($categoryCollection as $category) {
if ($category->getIsAnchor()) {
$isAnchor[] = $category->getId();
} else {
$isNotAnchor[] = $category->getId();
}
}
$productCounts = array();
if ($isAnchor || $isNotAnchor) {
/* @var $select Varien_Db_Select */
$select = $productCollection->getProductCountSelect();
if ($inCurrentCategory) {
$from = $select->getPart(Varien_Db_Select::FROM);
if (isset($from['cat_index'])) {
$categoryId = $this->getLayer()->getCurrentCategory()->getId();
$from['cat_index']['joinCondition'] = preg_replace("/(.*)(`?)cat_index(`?).(`?)category_id(`?)='(\\d+)'(.*)/", "\$1\$2cat_index\$3.\$4category_id\$5='{$categoryId}'\$7", $from['cat_index']['joinCondition']);
$select->setPart(Varien_Db_Select::FROM, $from);
}
}
Mage::dispatchEvent('catalog_product_collection_before_add_count_to_categories', array('collection' => $productCollection));
if ($isAnchor) {
$anchorStmt = clone $select;
$anchorStmt->limit();
//reset limits
$anchorStmt->where('count_table.category_id IN (?)', $isAnchor);
$sql = $anchorStmt->__toString();
$productCounts += $productCollection->getConnection()->fetchPairs($anchorStmt);
$anchorStmt = null;
}
if ($isNotAnchor) {
$notAnchorStmt = clone $select;
$notAnchorStmt->limit();
//reset limits
$notAnchorStmt->where('count_table.category_id IN (?)', $isNotAnchor);
$notAnchorStmt->where('count_table.is_parent = 1');
$productCounts += $productCollection->getConnection()->fetchPairs($notAnchorStmt);
$notAnchorStmt = null;
}
$select = null;
$productCollection->unsProductCountSelect();
}
foreach ($categoryCollection as $category) {
$_count = 0;
if (isset($productCounts[$category->getId()])) {
$_count = $productCounts[$category->getId()];
}
$category->setProductCount($_count);
}
Mana_Core_Profiler2::stop();
return $this;
}