2012-01-24 22 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

モデルのinit()関数に配置されたaddCondition()は常に実行され、グローバル条件とみなされます。関数に条件を手動で追加すると、グローバルにはなりません。 dsql()を呼び出すと、モデルとは何の関係もないdsql()オブジェクトが返されます。その後、where()を呼び出してそのオブジェクトにのみ影響を与える必要があります。 – romaninsh

答えて

0

問題が存在しなくなった4.2にアップグレードしてください:

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

はまたあなたの構文は、おそらく新しい4.2の機能を向上させることができます。

+0

このチケットを4.2で解決した方法でこのチケットを更新してください。 – jancha

+0

はい、4.2のアジャイルツールキットモデルはクローンセーフです。 – romaninsh

関連する問題