【CakePHP2.x】モデルでのバーチャルフィールド設定方法。

これが使えれば、ちょっと特殊なSQLも簡単に発行可能。

下記使った時の例。(ちょこっと改変してあります)

public function myCount() {
	$return = Cache::read($this->name.'_'.__FUNCTION__);
	if(!$return) {
		// バーチャルフィールドの追加
		$this->virtualFields = [
			'count' => 'count('.$this->alias.'.id)'
		];
		$conditions = [
			$this->alias.'.status' => 1
		];
		$fields = [
			$this->alias.'.hoge',
			$this->alias.'.count',
		];
		$group = $this->alias.'.hoge';
		$return = $this->find('list', [
			'conditions' => $conditions,
			'fields' => $fields,
			'group' => $group
		]);
		Cache::write($this->name.'_'.__FUNCTION__, $return);
	}
	return $return;
}

う?む。唸るほど便利。