2012-01-24 53 views
1

我寫了一個函數,該函數應該返回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; 
} 
+0

addCondition()放置在模型的init()函數中,將始終執行並且可以被視爲全局條件。如果你在一個函數中手動添加條件,那麼它不會是全局的。調用dsql()將返回與模型無關的dsql()對象。隨後調用where()只會影響該對象。 – romaninsh

回答

0

請升級到4.2是哪裏的問題不再存在:

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

還你的語法可以或許與4.2的新功能改進。

+0

用4.2現在解決了這個問題來更新這張票。 – jancha

+0

是的,從4.2開始,敏捷工具包模型是克隆安全的。 – romaninsh