Подсчет количества вхождений определенной строки с использованием коллекции Magento? - PullRequest
2 голосов
/ 26 февраля 2012

Я сопоставил свою пользовательскую таблицу с Magento, чтобы я мог получить все данные в ней, используя ниже

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

Ниже приведен пример таблицы, которую я отобразил

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

Мне нужно посчитать количество вхождений определенной строки в поля фильтров в этой таблице, используя коллекцию.

скажем, например, если я хочу посчитать вхождение 77 во 2-й строке (filter_id = 3). Как мне сделать это с коллекцией моделей?

Я знаю, что могу использовать запрос для прямого запроса к базе данных, используя методы запросов в magento, но я пытаюсь сделать это способом сбора.

Любые предложения будут полезны.

Спасибо

Балан

1 Ответ

1 голос
/ 01 марта 2012

Если я правильно понимаю, я бы применил вашу логику к модели.Проще говоря, вы сделаете свой выбор следующим образом:

$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;
    }

}

И, если вы хотите реорганизовать этот код в коллекцию, это будет почти тот же итератор, проходящий через каждую модель.Вопрос только в том, откуда вызывается исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...