Как удалить состояние модели?

Я написал функцию, которая должна возвращать массив клубов для userId. Я не знаю, почему, когда я добавляю where(Model_ClubUsers::$USERS_ID,$userId) к dsql(), это не устанавливает условие, и я должен использовать addCondition(), но мне это нужно только в этой функции. Есть ли способ удалить условие до возврата функции?

function getUserClubs($userId){
    $columns = array('id',self::$NAME,self::$LOGO_NAME,self::$DESC);
    $this->addRelatedEntity('club_users', 'club_users', Model_ClubUsers::$CLUBS_ID, 'inner', 'related');
    $this->addField(Model_ClubUsers::$USERS_ID)->relEntity('club_users');
    $aAliasedColumns = $this->getAliasedColumns($columns, $this->entity_code);
    $this->addCondition(Model_ClubUsers::$USERS_ID,$userId);
    $rows = $this->dsql()->field($aAliasedColumns)->do_getAll();
    $aResult = array() ;
    foreach($rows as $key => $value){
        foreach($value as $vKey => $vVal){
            if($columns[$vKey]=='id'){
                $aRow['key'] = $vVal;
            }else if($columns[$vKey]==self::$LOGO_NAME){
                $aRow[$columns[$vKey]] = self::$CLUBS_LOGO_PATH.$vVal;
            }
            else {
                $aRow[$columns[$vKey]] = $vVal;
            }
        }
        $aResult[] = $aRow;
    }
    return $aResult;
}

person user1137146    schedule 24.01.2012    source источник
comment
addCondition(), помещенный в функцию init() модели, всегда будет выполняться и может считаться глобальным условием. Если вы добавите условие вручную в функцию, оно не будет глобальным. Вызов dsql() возвращает объект dsql(), который больше не имеет ничего общего с моделью. Последующий вызов where() должен влиять только на этот объект.   -  person romaninsh    schedule 24.01.2012


Ответы (1)


Пожалуйста, обновитесь до 4.2, где проблема больше не существует:

$x=clone $this;
$x->addCondition();

также ваш синтаксис, вероятно, может быть улучшен с помощью новых функций 4.2.

person romaninsh    schedule 10.02.2012