使用Magento集合计算特定字符串的出现次数?

时间:2012-02-26 10:40:17

标签: magento

我已将自定义表格映射到Magento,以便我可以使用下面的内容获取其中的所有数据

 Mage::getModel('custom/filter')->getCollection();

以下是我已映射的示例表

 
filter_id filters
------------------
1         5,6,5
3         77,8,5,77
10        22,55,33
 

我需要使用集合计算此表中字段过滤器下特定字符串的出现次数。

例如,如果我想在第二行中计算出现77(filter_id = 3)。 我如何使用模型集合?

我知道我可以使用查询来直接使用magento中的查询方法查询数据库,但我正在尝试以收集方式执行此操作。

任何建议都会有所帮助。

谢谢,

巴兰

1 个答案:

答案 0 :(得分:1)

如果我正确地理解了这一点,我将采用的方式是将你的逻辑放入模型中。简而言之,您将做出如此选择:

$filter_id = 3;
$query = 77;

$collection = Mage::getModel('custom/filter')->getCollection();
$collection->addFieldToFilter('filter_id', $filter_id); // Hopefully it will be more than just one

foreach($collection as $filterModel) {

    $filterModel->getOccurrences($query);

}


/////******     Company/Custom/Model/Filter.php    ******////////


<?php
class Company_Custom_Model_Filter extends Mage_Core_Model_Abstract
{

    protected function _construct()
    {
        $this->_init('custom/filter');
    }

    public function getOccurrences ($value)
    {
        $exploded = explode(',', $this->getFilters());
        $count = 0;

        foreach($exploded as $explodedValue) {
            if ($explodedValue === $value) $count++;
        }

        return $count;
    }

}

而且,如果你想将这个代码重构为一个集合,那么它将是几乎相同的迭代器,遍历每个模型。这只是从初始代码调用的地方。