我已将自定义表格映射到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中的查询方法查询数据库,但我正在尝试以收集方式执行此操作。
任何建议都会有所帮助。
谢谢,
巴兰
答案 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;
}
}
而且,如果你想将这个代码重构为一个集合,那么它将是几乎相同的迭代器,遍历每个模型。这只是从初始代码调用的地方。