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