Dans CakePHP 2.0 (beta à la date d'aujourd'hui), avoir des VirtualFields peut générer des erreurs lorsqu'un modèle change d'alias.

Pour remédier à ce problème, voici un petit bout de code à placer dans AppModel.

public function getVirtualField($field = null) {
	if (!empty($field) && $this->isVirtualField($field)) {
		if (strpos($field, '.') !== false) {
			list($model, $field) = explode('.', $field);
		}
		return str_replace('{alias}', $this->alias, $this->virtualFields[$field]);
	} else {
		return parent::getVirtualField($field);
	}
}

Ensuite, spécifiez vos virtualFields de la manière suivante :

var $virtualFields = array(
  'name' => "CONCAT({alias}.first_name, ' ', {alias}.last_name)"
);

Ce qui dynamiquement donnera ceci :

var $virtualFields = array(
  'name' => "CONCAT(User.first_name, ' ', User.last_name)"
);

Edit #1 : Gestion du . dans le nom du champ passé à la fonction.