Страница 1 из 1

Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.25, 13:48
nenor
Столкнулся со следующей непоняткой. Имеется код, такого вида:

Контроллер

Код: Выделить всё

private function search() {
$Profiles = new Profile();
/*
* тут различные условия поиска
*/
        if ($option_noimage) {
            $Profiles->scSkipNoImage();
        }
$SearchResult['Profiles'] = $Profiles->findAll(array('limit' =>15)); // [1]
$SearchResult['CountProfiles'] = $Profiles->count(); // [2]
return $SearchResult;
}
Условия поиска в модели:

Код: Выделить всё

  public function scSkipNoImage() {
        $this->getDbCriteria()->mergeWith(array(
            'condition' => 'pic IS NOT NULL',
        ));
        return $this;
    }
 
После выполнения [1], последующие методы экземпляра модели выполняются некорректно, то есть в [2] получается статичное значение у $SearchResult['CountProfiles']. Если поменять строки местами, [2] => [1], то снова будет корректно выполняться метод, следующим первый. Пробовал ввести переменные и присвоить экземпляр класса с измененными условиями поиска, но результата не дает.
Вопрос: Каким образом можно добиться корректного выполнения методов [1] и [2]?

Re: Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.27, 08:53
nenor
Кто нибудь из гуру php может помочь?

Re: Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.27, 09:54
asset
откуда $SearchResult взялся? массив присвоен?

если так,что будет?

Код: Выделить всё

$SearchResult['CountProfiles'] =  count($Profiles->findAll()); 
 

Re: Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.27, 10:09
SiZE
А почему не хочешь вернуть CActiveDataProvider и пользоваться его методами?

http://www.yiiframework.com/doc/api/1.1 ... unt-detail

http://www.yiiframework.com/doc/api/1.1 ... ata-detail

Re: Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.28, 08:41
nenor
SiZE писал(а):А почему не хочешь вернуть CActiveDataProvider и пользоваться его методами?

http://www.yiiframework.com/doc/api/1.1 ... unt-detail

http://www.yiiframework.com/doc/api/1.1 ... ata-detail
Слишком много памяти кушает, пришлось отказаться.

Re: Несколько методов для одного экземпляра класса.

Добавлено: 2014.03.28, 13:08
SiZE
nenor писал(а):Слишком много памяти кушает, пришлось отказаться.
Пробовал? http://yiiframework.ru/doc/cookbook/ru/ ... r.iterator

А сколько кушает то в итоге? Я че-то сомневаюсь что 15 записей в памяти среднестатистической таблицы профиля вообще что-то кушают