日記というかただの愚痴なんで7.5です。
もしくはbug reportingですかね(・∀・)

CActiveRecode.phpのquery()のトコが気になる。
Yii PHP framework 1.1.0

	private function query($criteria,$all=false)
	{
		$this->beforeFind();
		$this->applyScopes($criteria);
		$command=$this->getCommandBuilder()->createFindCommand($this->getTableSchema(),$criteria);
		return $all ? $this->populateRecords($command->queryAll()) : $this->populateRecord($command->queryRow());
	}

だったのが
Yii PHP framework 1.1.1
では

	private function query($criteria,$all=false)
	{
		$this->applyScopes($criteria);
		if(empty($criteria->with))
		{
			if(!$all)
				$criteria->limit=1;
			$this->beforeFind();
			$command=$this->getCommandBuilder()->createFindCommand($this->getTableSchema(),$criteria);
			return $all ? $this->populateRecords($command->queryAll()) : $this->populateRecord($command->queryRow());
		}
		else
			return $this->with($criteria->with)->query($criteria,$all);
	}

何か色々機能が増えてそうだね♪ って話じゃない。
$this->applyScopes($criteria)を呼ぶタイミングが変わってるんですよ。
$this->beforeFind()の前と後に。
でapplyScopes()は何と言うか、CDbCriteria(よーするにSQLクエリー)の情報を混ぜる役目っぽいのですよ。

新しいバージョン(1.1.1)ではbeforeFind()の前に呼ばれている。
これだと…そう、beforeFind()で条件を指定出来なくない!?
って話。
Yii Framework触るぜ日記(4)でやったshimiSoftDeleteが動いてなくて「あれ?俺、試してなかったっけ?」となっていたんですが…バグじゃね?
念の為にyii-1.1.0で試したらちゃんと動くじゃねーか!
仕様変更とも言えるかもしれないけど…検索条件さわれないbeforeFindに何の意味があるんですか(ノд`)俺の数時間返せ…

Yii PHP framework 1.1.2で修正される事を切に願います。
ってか誰か英語出来る人、本家に聞いてみてほしい(´・ω・`)

追記:速攻
issue見たらあった。。。orz
えー…なんなろこのキモチ(´・ω・`)

追記:one more thing!
えーっと、1.1.2が出るまで自力で修正する人は
CActiveRecode::query()の位置を変えるのと、CActiveFinder::query()の方も変更しないとwith()使った際にアレです。
これでさらに30分は使った。。。

関連する記事

  1. behaviorためしてみた Yii Framework触るぜ日記(4)