沒有辦法(據我所知)創建虛擬領域「在飛行中」。虛擬域是「arbitrary SQL expressions」,當查找遍歷模型時將執行,並且「將在模型的關鍵字和其他模型域下進行索引」。
你需要做什麼「動態創建虛擬領域」?如果你解釋一下你需要完成什麼,也許我們可以提供一個不同的(甚至更合適的:) :)解決方案?我個人很樂意幫助你。
在你編輯你的問題後,我可以說你得到的是數組應該返回的方式,這是因爲fields參數。如果你想得到一個不同的結構,我建議應用回調來設置它的格式。 首先移動CaseMaster Model
裏面的方法:
public function getMaxCaseCount($client_id){
$data = $this->find('first', array(
'conditions' => array(
'CaseMaster.CLIENT_ID' => $client_id,
'CaseMaster.CASE_NO LIKE' => '%-%'),
'fields' => array('max(CaseMaster.CASE_NO) AS MAX_NO')));
return array_map(array('CaseMaster', '__filterMaxCaseCount'), $data);
}
private function __filterMaxCaseCount($input){
//This is just an example formatting
//You can do whatever you would like here.
$output['CaseMaster'] = $input[0];
return $output;
}
的array_map功能將應用__filterMaxCaseCount
回調方法,這樣,當你撥打:
$this->CaseMaster->getMaxCaseCount($client_id);
從你的控制器,你將獲得數據的方式你需要它。該array_map功能也可以是這樣的:
return array_map(array($this, '__filterMaxCaseCount'), $data);
,因爲你在同一類是。
請把你的代碼迄今。 – Dave